User domain object persistence implemented.

 - User domain objects now have _Optional_ ids.  If an id is not
   present, it is classified as having not yet been persisted to the
   database
 - Persisting a User domain object will return a new instance with
   its id field set to the database-generated value