Added a game state manager and a gameplay game state

|SOURCE|
[Common/Game]
* GameStateManager is used to manage the overall game lifecycle, an instance of
  GameplayGameState is used to demonstrate the new lifecycle system
[Common/GameState]
* GameState is used to encapsulate a single state that the game can be in at
  any time, it is intended to be derived from so other states can modify the
  behaviour of the current running state
[Common/GameStateManager]
* GameState instances are managed with the GameStateManager, it is responsible
  for adding and removing states from a stack and registering game states to be
  used for adding states to the stack
[Common/GameplayGameState]
* The state responsible for the main gameplay part of the game, other states,
  such as a menu, are to follow
[Common/Memory]
* Added a SafeDelete macro to check if a pointer is null before deleting it,
  then sets it to null if it is deleted