Rename System::active to System::enabled

To avoid confusion with the next commit
Enable systems to react to their GameStates activation / deactivation

This removes the ugly hack of the GameState explicitly asking
the OgreViewportSystem to remove / restore the viewports.
Remove GameState::setPhysicsDebugDrawingEnabled

Clients should just enable / disable the debug draw system
Add GameState::name()
Pass around GameState pointers instead of their names
Add Keyboard::wasKeyPressed and Keyboard::wasKeyReleased

These methods are more convenient than systems keeping track of
the key state themselves. Furthermore, they solve the problem of
systems not knowing the actual key state when activated by
a key stroke.
Make TextOverlaySystem handle state switch gracefully

All overlay elements need to be removed / restored on a state
switch.
Refactor OgreViewportSystem to be closer to TextOverlaySystem

Reduces code duplication
Make Entity class use GameState in its public API

Script authors shouldn't have to care about the EntityManager.
They *should* care about the game state an entity is living in.
This change reflects this.

Unfortunately, since GameState cannot exist without a
full-fledged Engine object, this change makes Entity pretty
awkward to test, so the tests have been removed for now.
Add initializer function to GameState
Update scripts to use GameState initializer

Also adds a SwitchGameStateSystem that toggles between two
alternate microbe universes on pressing F1. Purely for testing.