Implement generic game state mechanism

The way it works is that game states descend from GameState and can call
Cataclysm::transition() to transition to another game state. The only
hardcoded thing is the initial state, which is the MainMenu.