Add basic public key add/delete

This adds a very basic functionality for users to add/delete public
keys. It provides pubkey verification so we don't allow adding keys that
aren't actually valid keys.

You are allowed to add a public key for your account, and if you're a
user_admin, you can add/delete them on any account. Anybody can view
public keys.
Requested fixes

this commit will be squashed, but this adds the TODO, converts the Text
to String, and also removes the unreliable onupdate function
Expose keys in users API

This exposes the list of public keys in the /users/ API method so that
we can consume that data.

This also fixes a bug where the key we stored was just the key...
without the key type or comment.
Add permissions model, audit log

This adds a basic permissions model and audit log to the FE. The
permissions model is not yet exposed in the API.

Also, we don't have fine-grained control over granting/creating
permissions, at the moment manipulation requires the permission_admin
capability on your user account.