Implement "Change username" feature

Implements the "Change username" feature ([Trello Link](https://trello.com/c/9nwlCiXs/164-change-password-email-username)) in a panel on the settings page.

Some questions (Not all completely related):
1. Should we have a "Current password" field as added security in the "Change username" form?
2. I've based this on the "Change password" code, which triggers a JS `alert` on success/error, is this a temporary placeholder?
3. A continuation of 2. Errors return a 404, but this shows on the client side as "Error (please reload): <error message> (Check developer console)" I take it this is also temporary?