Debugging/cleanup

Refactoring of most of the code into separate files, cleaned up GameState (and removed GameStateData).  Overall just tried to simplify and clean up a lot of the code to make it easier to follow and debug.