Major commit. Created abstract GameState, and extended it to MainGameState. Refactored most of the code from GameWindow into MainGameState. Refactored most of the code from InputHandler into MainInputHandler, and made InputHandler abstract.

Now the GameWindow maintains a stack of GameStates, with the MainGameState being the primary one. GameStates contain InputHandlers.