Lists of buttons can now be scrolled through via W / up arrow and S / down arrow. Core entity changes.

* ButtonList.cs:
  Initial version.

* AEntity.cs:
  Modified to use AState instead of Game.

* SceneNode.cs:
  Made Update and Draw methods virtual.

* AState.cs:
  Added OnStatusChanged event.
  Converted OnKeyPressed to an event.

* DifficultyState.cs:
  Modified to use ButtonList.

* EndGameState.cs:
  Converted to use new OnKeyPressed event.

* AUIElement.cs, Block.cs, Player.cs, ARectEntity.cs, BlockSpawner.cs, Pickup.cs, AUpgrade.cs, SlowDownUpgrade.cs, SlowBlocksUpgrade.cs, VelocityBoostUpgrade.cs:
  Modified to use AState.

* GameState.cs:
  Added InGame bool.
  Added OnResumeGame and OnPauseGame events.
  Cleanup.

* MenuState.cs:
  Cleanup.
  Now uses ButtonList.

* Button.cs:
  Modified to use AState.
  Added static ClearColor and Select color.
  Modified to make the button's color not be set to white every tick.