Merge pull request #38 from Revolutionary-Games/single_threaded

Single threaded
Merge branch 'master' into prototype
Initial implementation of GameState

* 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
Fix crash when GameState has no viewport system
Fix ownership transfer of systems when adding new GameState from Lua
Add GameState bindings to Lua

They don't contain anything (yet), but are required because
System::init takes a GameState parameter.
Expose Engine::setCurrentGameState to Lua
Add GameState testing script
Merge branch '46_gamestates' of github.com:Revolutionary-Games/Thrive into 46_gamestates