corrects reference to _loadFromDbObject in User.replace
fixes User.replace() to load json from the old user before it logs out
and refactors json load/save methods.  the "full" representation that
should be stored in the database loaded from the database/session is
obtained with getPersistentJson([password]) - the password can be
supplied for saving to the database, otherwise it is left as undefined
so won't be included in any json representations.  The password is
never stored on the User now, so there is no chance of accidentally
including it in the normal toJSON and sending it out to other users over
the websocket