fix bug 753563 - Support username changes

Users now find an extra field on their profile edit page titled `Username`. Changing this
field allows them to change their username.
Existing usernames that do not comply with the new validation rules will not be affected.
fix bug 1087577 - show edit button on profile page for staff users

This also shows a warning on the edit profile page if the profile's user isn't the same as the editing user.
bug 753563 - move username regex and error message to central location.
fix bug 1091017 - get rid of Django < 1.4 shim for DatabaseError.
fix bug 1090241 - get rid of PlusToSpaceMiddleware
Merge pull request #2846 from jezdez/new-issue-753563

fix bug 753563 - Support username changes