User Values are being persisted

Checkpoint.  Getting there, but not quite right yet: for some reason, we
are losing the user value when the UserSession times out and is
reloaded.

Fixed to use the *identity*, not the *user*, as it should have always
been.

Introduced User equality, so I can hash on it.