Add GameMode enum and PlayerGameModeChangeEvent

Yeah I can't really think of any justification for a setNewGameMode().. although I also can't think of any reason not to have it