updates Application to use unwrapped User parameter to UserConnected event
starts implementing game restoration in Application

the purpose of this is that if the server goes down unexpectedly there'll
be no record of whatever games were currently in progress on the server, so
when the server comes back online, if both players submit their local copy
of the game data, the game can be reconstructed and they can carry on
playing from where they left off.

In some cases one player might have an extra move in their local copy, or
a savvy user might try restoring it with a different history, so only the
moves submitted by both players will be added to the reconstructed game.