Some game level documentation.
Refactor game_loop into Game class.

This allows a Game instance to hold some instance-level state, and
clearly demarcate which methods modify this state.

It also reduces the cyclomatic complexity of the game_loop function,
which had grown unweildy.