Fully implement password reset

With this commit, the full password reset flow is now
implemented.  Users receive an email with a code, and then
are instructed to click on the link.  The link takes them
to a password reset page, where they can change their password.
They are then prompted to log in with their new password.

This addresses #111