[1458] Disallow empty usernames

First & foremost, this resolves #1458.

The second commit also makes it so the validation errors are passed to the user, so they know exactly what went wrong.