Support user metadata

This will allow apps to store arbitrary things on `User`s, without tacking them directly onto the instance.