Make sure `username` is unique for Users.

* validates to confirm that the username hasn't been taken when saving
  a record.
  * when updating an existing record, checks that the username is not
    used on a record *other* than the current one.
Fix `getCryptedPassword` method to return the User's password.