changes deregister logic in User - deregister() instead of isActive()
and makes getTimeLastActive public.

deregister() returns true if the User is inactive and has done whatever
cleanup it needs to do.
changes cleanup users code to match new way (deregister()) and makes the cleanup interval a constant