Revise the GameState concept

GameState isn't a singleton anymore.
GameEngine uses unique_ptr for the GameState.