General code cleanup. Blocks should no longer intersect.

* Game.cs:
  Added overloads for SetActiveState and GetState to make it more clear what is being changed.

* MenuState.cs, DifficultyState.cs:
  Cleanup.

* EndGameState.cs:
  Converted to use new method of state getting.
  Cleanup.

* BlockSpawner.cs:
  Added new BlockSpawner implementation.

* GameState.cs:
  Converted to use new BlockSpawner.