Add GameMode enum and PlayerGameModeChangeEvent

My idea of WolrdGameModeChangeEvent is bad: I think it's not vanilla behaviour, what do you think about ?