Pretty much reorganised the GameEventsBroadcaster class.

It has now one entry point (RaiseGameStateChanged) to notify other objects of changes.

Use then the detailed events to actually catch the events you're really interested in.
Changes to the WaitCursorManager to take advantage of the new structure of GameEventBroadcaster.