Add GameEngine and GameState class

GameState represents the states of the game.
GameEngine manages the current state and switching between them.

Doxygen now scans the source directory recursively.
Add a commented-out game loop to main.cpp, for testing purposes.
Fix a typing error in main.hpp.