Avoid calling UpdateGame an unhealthily large amount

UpdateGame is an extremely expensive call that rebuilds much of the UI almost from the start. Upon joining the lobby, a deluge of these calls occur (as each piece of the game state is decoded). This is probably the cause of the irritatingly long UI freeze that occurs when you join a game.

So, let's fix that. This PR is not ready for merging yet: more commits will be added as I go. This is chiefly for code review at this point. (plus, extensive testing will be needed for such a rewiring of the network code, methinks.)