Split game-oriented non-initialization code into its own module.

This incorporated a few other changes:
1. Add the cursor to be part of the board (this makes sense since it rises
   as the blocks in the board rise)
2. Split game loop out into it's own thing so that we can actually loop it
   using ArrowLoop