Add PushEnv().

This is to allow subclasses to change the environment after it has been
created.
Pass MetaSession instead of raw ClientSession.
Restore broadcasting the session.

This time we pass around the MetaSession, which contains the current
SessionPeer.

We also properly notify that the session is no more when the GameScene
goes away, which fixes the case where we exit the GameScene without
finishing the race.