Changed the State implementation

The entire State implementation has been reverted to the initial one.
Changing the implementation to use a object/memory pool was unfound, as there were no measurements taken to prove it's better
.
The current implementation uses an ABC to create derived states through a static templated method.
States are stored in a unique_ptr.
Add GameContext and ServiceLocator classes

The Engine class now has methods to create GameContexts and make them active.
Each call of the Engines' Loop methods updates the currently active context.
If the context is not set or its Update methods returns false, the game closes.
The Engine has a ServiceLocator
 class to which it registers all of the subsystems.
The locator is passed to each context so they have references to the subsystems.
Work on adding the Action functionality.

Add ActionUpdater class
Add ActionUpdater to GameContext
Move the typedef for ActionLogic functions in its own header
Clean up Action object from unneccessary methods
Make Engine update the active GameContext