2163: Fix HTTP 500 on blank user name

Makes it use a proper form submit so we can have required input fields.
Add tests for setting your own password; fix an issue they showed.

Because the set_password mechanism makes an immediate change to the
LDAP, changing your own password via nemesis was previously broken.

While the password change itself would work, any changes at the same
time would have failed (because the save() would have been bound with
now invalid credentials). The more recent change to prevent students
modifying their own names also caused the entire request to 500, as
the ah.user.is_student check tried to run against the now NullUser
that the auth helper returned.

Move the password change to the end of the method to ensure that the
other changes go through ok, and add tests for changing your own passwor
on its own and in combination with other changes.

Change-Id: I01bff0b53bc1c7e09d31a392b1db33ccc9a79d34
Fix #2164: Remove need to re-login after changing own password.

Detect that the user being edit is the one that is logged in, and
that the password is being changed. Use the new value to perform a
new login once the edit request returns, thus ensuring that any
future requests use the new password value.

Change-Id: Ie0dcc4e49b27c44029f90660431d133f5c09938d
Fix #2163: Ignore blank name values but require them on the form.

This merges a fix which avoids the back-end 500ing when asked to set the
user's name to an empty string by ignoring it. In order to reduce the
chances of this occurring, the front-end also now labels these fields
as required.