Germ graphics returned in Rand monad not IO monad.

Now with some basic event handling.
Introduce new GameM monad.
Add development log
Began work on Finite State Machine formulation of the game.

- SDL events are converted into game events.
- Game is driven by two functions
  - "frameUpdate" called once per frame.
  - "handleEvent" called asynchronously whenever an event fires.

At present handleEvent does not work asynchrously. It needs to be
running in a separate thread.