catch registration conflicts better

In my application, I've started normalizing usernames in custom
UserClass.get_by_username* implementations. Since both email and
username are compared case-insensitively in the model, we should
do the same here. For my purposes, it made sense to let username
by a fallback since email matches are exact (modulo case) while
usernames can have certain ignored special characters preserved
only for display. We can revisit this at a later date and perhaps
offload more of this reasoning to the model.