Add GameMode enum and PlayerGameModeChangeEvent

@spaceemotion corrected all public in interfaces. Thank you.