Clean-up "game start-up" code
Currently the game start-up code is managed by the hierarchy of "cGame" classes. There is a lot of code duplication between these classes.
This code duplication needs to be removed. This may be done by removing the class hierarchy entirely and using objects for client and hosts games instead.
On the reimplementation of this it should be taken into account that the game start process is currently not synchronized and this can lead to messages being lost (especially when loading multiplayer games). These problems should be taken into account when fixing this issue.