Add .has_user(), .get_user() and .set_password() to Authenticator

This adds the needed abstract methods in the Authenticator interface to be
able to change passwords:

- Authenticator.set_passwords(): set a new password for an user.
- Authenticator.get_user(): obtains the details for an user.
- Authenticator.has_user(): checks whether the authenticator knows
  about an user. A default implementation is provided which tries to
  use .get_user(), and reverts to enumerate users with .usernames()
  if the method is not implemented.
Implement PlainStore.set_password()
Implement TrivialStore.set_password()
Implement the "omni change-password" CLI command