disallows usernames beginning or ending with whitespace and registering the anonymous username in User
adds seekStrategy parameter and corresponding constants to Bot to allow
specifying whether they should create or accept challenges, or choose
randomly.

refactors _gamesPlayedAs.. to a dict, and tweaks engine variables
changes User to send only the minimum data needed for RandomGames updates
simplifies and refactors random game messages in User - the only
messages now are /random_game and /random_game/game_over.

/random_game is used for both initial details and updates - it
contains the id, current fen and last move details if applicable.

/random_games is no longer sent; a succession of /random_games
messages are sent instead.