Add GameMode enum and PlayerGameModeChangeEvent

It has been discussed that exposing IDs is not necessary. This is a matter on implementation.