Make Game abstract

Make the game controller abstract so the engine can be set in a more conventional way. Also rename the 'StateBasedGameException' to 'GameException'.
Add BasicGame game type

Add the 'BasicGame' game type that uses only one game state instead of multiple.