Edit user

Addresses https://github.com/learningequality/ka-lite/issues/922 and other related bugs.

Changes:
* Only check username collision in username-changed scenario.
* Only reset password to something new if password is non-blank
* Only show edit page if you're an admin or you're logged in as the user you're editing
* Better redirects, based on edit / create
* Validate passwords before save (programmatic / API-esque change)

Testing:
* Tested all of above scenarios

PR Help:
* @wangguan59 Could you try this out?
* @jamalex your comments on security (and of course, code as a whole, if you have time) would be appreciated
* @dylanjbarth Any moment to give this a once-over?