pgp key management and email encryption

(not ready to merge)

(based on viktor/tfa branch; TODO: rebase on master before merging)

Backend:
* [ ] allow users to enter a pgp key when they sign up
* [ ] allow users to add and remove their pgp keys after they are logged in
* [ ] respect two factor auth rules
* [ ] encrypt email sent to users with pgp keys

Frontend:
* [ ] allow users to enter a pgp key when they sign up
* [ ] allow users to add and remove their pgp keys after they are logged in
* [ ] respect two factor auth rules