Add GameMode enum and PlayerGameModeChangeEvent

No, it doesn't force the new gamemode, it just sets the default.