A reimplementation of the game extracting pieces into classes.

Initial thoughts on organizing the code into a more structured format.
Additional changes can be made to further reduce duplication and make
pieces easier to extend.
Only create new screen when game state changes

Previously on every draw a new screen was created, except for the
in progress screen, and the game status was changed to determine the
active screen. Now the screen is only created when the game state
changes, ex: in progress to pause. This also means the game doesn't need
to keep track of the status to know what screen to draw. Instead it can
query the screen to determine the status of the game, ex: game over.