GamePeer takes GameDirector by reference.

This is to better match how we use the GameDirector in newer classes.
Eliminate deferred session start complicatedness.

ClientApp::NewLocalSession() uses RequestReplaceScene() so the session
won't start until the game loop starts, which won't happen until after
the on_init handlers execute, thus there's no longer any reason for the
little requestedNewSession dance.
Add GameDirector::RequestNewPracticeSession().