Fixed timing issue. Buttons require less processing power.

* AState.cs:
  Added OnMousePressed event.
  Now cleans up internal event handlers.

* GameState.cs:
  New timing system to fix a longstanding issue with it not taking game pauses into consideration.

* ScoreboardState.cs:
  Documentation.

* Button.cs:
  Switched to use new MouseButtonPressed event, which also fixes another issue with multiple clicks being registered.