|SOURCE|
[Common::GameState]
* Added a GetName member function which can be used with the GameStateManager
  for pushing a state onto the stack (the state must be registered, first)
[Common::GameStateManager]
* The GameStateManager is responsible for maintaining the life cycle of
  GameState objects, though the creation and deletion of GameStates is not
  handled
* RegisterGameState will take a pointer to an existing GameState and add it to
  the GameState name to GameState map, returning ZED_OK on success, ZED_FAIL if
  an error occurs while adding the GameState to the map
* Push takes in a GameState's name, which must exist in the GameState name to
  GameState map, if it is found, the GameState is pushed onto the stack, and
  its Enter member function is called.  If the GameState's name is not in the
  map, then ZED_FAIL will be returned and the GameState will not be pushed onto
  the stack.  Otherwise it will return ZED_OK if the GameState was found and
  the Enter member function returned ZED_OK.
* Pop removes the top-most GameState, if no more states are available, ZED_FAIL
  is returned.  Otherwise, the GameState is popped and ZED_OK is returned.
* SwitchState will check if the GameState's name is valid, if it is, the
  top-most state is popped off and the requested GameState is pushed on.
  Otherwise, the top-most state remains and ZED_FAIL is returned.
* Execute calls the top-most GameState's Execute member function, if there is
  no GameState at the top, this member function returns ZED_FAIL. The
  GameState's Execute return value is returned, otherwise.