use Identity for testing login availability

We create an identity alongside each user. Make sure the identity
is valid when creating the user. This also ensures that the login
picked is available because otherwise the identities address would
not be available anymore.
minor: beautify handle lookup in etc/passwd some
ensure identity is cleared on user.reload - fixes test
bring back the alias functionality in Identities
allow changing the user_id on an identity

we set it to nil when we disable it
adopt tests to new error messages for identities
catch corner cases of account creation

Users now always check if their identity is valid. We need to make
sure this works if the user is a new record and once it has been
persisted.

While the user is a new record the identity will have no user_id.
Old identities that are left to block the login of a user who
canceled their account also have a blank user_id. They still should
render the new identity invalid so the user can't be saved with a
login that has been reserved.

Once the user has been persisted we set the user_id on the identity
and save it too when creating an Account. This allows us to create
a plain user and save it and it will still have an in memory identity
only. But the default is to create the user by means of creating an
account so an identity will be created as well.
hand on errors from Email to Identity to User

errors.each iterates through all errors for all attrbibutes nicely.
ensure User#reload returns self
clearify identity validations

Identity.new.valid? should not crash. So validate presence where needed and
skip the other validations if the value is absent.
Merge pull request #168 from azul/bugfix/fix-login-validations

Fix login validations