starts Player class, starts moving send and subscribe code out of Game
and into User (using snippets.js as a holding area).

Game will have public methods and events instead of interacting with
Users through the send/subscribe system.  It now deals with Players as
opposed to Users, and both Users and Bots will have a Player for playing
games.

Ratings will be handled by Users and Bots - Player just has an integer
rating with a setter and a getter.

Now that the methods are public, there is less control over who can do
what to a Game - even though you pass a Player, a User could easily call
game.move(game.getPlayer(game.getPlayerColour(this._player).opposite), ...
to make a move on behalf of their opponent.  This isn't a security issue,
it just means the security concerns are in the User now as opposed to in
the Game.
changes Player to be an adapter between Users and the interface that Game etc use
(just getRating), and to handle User replacement by having a setUser method.

The Game doesn't have to handle Replaced because the Player stays the same, but
the Player's reference to a User changes, as do the Users' internal Players -
the new User gets the old User's Player, and the old User creates a new Player
(this happens on logout).

The /user/replaced functionality and the Replaced event are now gone; the user
just logs out when they're replaced.
adds getName to Player (for the from: field on chat messages)
carries on refactoring message handling into User.  have decided to
put ids back into /game urls and add message handlers for each game
in User - this means the callbacks will have to be removed, otherwise
games will stay in memory for as long as the Users.
continues refactoring Application, Player, User, Bot and Game and
fixing errors.  Can get a game started now but making moves crashes
the server.
removes temporary holding file for moving code around
adds getHistory method to Game
adds Square require to User
adds game id variable to User._subscribeToGameMessages
corrects reference to this._user in User message handler
adds game.Move handler in User._addGame
adds jsonchess/Move require to User
updates getPlayerColour call to pass _player instead of just this in User._registerCompletedRatedGame
adds getGlicko2 to User and Player for rating updates
adds getGlicko2 to Bot - returns engine strength rating and default vol and rd
removes unused Application._sendToAllUsers method
changes Application to fire ChallengeExpired with the id instead of the challenge
sends /challenge/expired from User when a challenge expires

the aim is to get all send()s out of Application (the only place that
still has them except for User) so that only the User knows about
sending stuff to the client.
removes User.disconnect from replace() - there's no need to disconnect them,
as logging out pretty much re-initialises everything on the client anyway
sets _currentChallenge in User._createChallenge