GameState

This pull request refers to #46.

Changes in the initial commit:

* Systems are now initialized by their GameState instead of the
  Engine directly
* Mouse and keyboard are not handled by systems anymore, but are
  special objects updated by the Engine object directly
* Saving and loading are not handled by systems anymore, but
  by the Engine object directly

Todo:

* Update scripts to use game states
* Fix the inevitable crashes
* Add / update documentation