Add GameMode enum and PlayerGameModeChangeEvent

@ryantheleach That's what event priorities are for.. the same could be said for block place events or basically anything