Fix saving of edited user information

Editing user information had a couple bugs since the introduction of fedmsg:

* Changed email addresses were saved before the email was verified.
* The use of validators meant for input from the web page on the db tables yielded a traceback when the inputs weren't the same (ssh_key is a file via the web page but a unicode string via the database).

This rewrite of the saving code is a little more verbose but it should be clearer what the code is doing and it will also do the right thing in those cases.