adds _getPrivateJson method to User for the user getting their own details

this includes the user's current challenge and last created challenge
renames _getAbsoluteGuestRating to _getAbsoluteRating in Challenge
adds _user.Deregistering handle, updates database on logout, and removes
_logout() from replaceWith in User.  There is no need to log out as well
as being replaced - things that have Users should always know what to do
if they're Replaced.

Deregistering is when the websocket server is removing its reference to
the User and the User is disconnecting.

CheckingActivity is fired first, and the deregistration process can be
stopped by calling registerActivity() on the event argument.