Small refactor of GameContexts

GameContext now has many pure virtual methods that are called when something interesting happens
to them. These methods are called when the context is created and registered to the Engine, when
it is set as the active Context (activated), when another context replaces it as being the active
context (deactivated), and when it is destroyed.
Engine now has a new templated method which can create only those contexts that only receive the
default data, namely references to services and resources.
ActionIndex renamed to ActionRegistry, and given methods to iterate over it's contents.
Actions are given a new method to validate the Entity that is being registered to them. This is
done to make updating entities a bit easier, as now any entity is guaranteed to have the required
states.
		NOTE: this is only if states are not removed from entities at runtime. If than does happen,
		a mechanism should be introduced to let actions know that an entitys states have changed.