disallow empty usernames
display useful errors to the user when changing username

also, spaces at the beginning and end of a username are automatically
stripped
make `change_username` return the string used

The benefit being that in the case where we strip characters from the
requested username, we can return the new actual username without
hitting the database again.
Merge pull request #1464 from Daxter/bugfix/1458-empty-usernames

[1458] Disallow empty usernames