partially refactored to include the game engine

in the middle of this job: added gameState to hold all game level data.
added EventBus to notify subscribing controllers of events including
change to gameState. Player and Main Controllers now watch for changes
in gameState and may respond. Changes to game state can be introduced
by broadcasting messages to the EventBus.