Add GameMode enum and PlayerGameModeChangeEvent

I don't think so... At this point (in the event) I think we only want to know which mode it is about to switch to, and maybe cancel it.