Add support for users without email addresses

It is not always possible for all users to have an email address, e.g. when
migrating, or removing personal data after disabling an account. Changes have
to be enabled by adding a setting.

* Adds two settings to enable support for optional email addresses
* Changes user_init and user_save to retain unhashed usernames when no email
* Changes backend to refuse authentication without email address
* Changes create and change forms to make email optional, when support enabled
* Changes admin to display the username when no email
* Changes migrate_usernames to allow empty email, when support enabled
* Adds tests for these changes, and for migration (with and without support)