Introduce asynchronous validation to User form.

Now we actually check the database to see if the current password we
supplied was correct and if the e-mail address is already in use.
Finish up editUser validation.

Also clean up the form processing logic for that page.
Add country flags to getUsers page.
Persist editUser data to the database.
Use macro to always display proper gravatar.
Introduce 'Action' database.

This database will log nearly every single action a user does.  This is
useful for 'last seen' functionality, as well as attempting to
reconstruct potential problematic behavior by users.