pgp key management and email encryption fixes #38

Backend:
* [x] allow users to enter a pgp key when they sign up
* [x] allow users to add and remove their pgp keys after they are logged in
* [x] respect two factor auth rules
* [x] encrypt email sent to users with pgp keys

Frontend:
* [x] allow users to enter a pgp key when they sign up
* [x] allow users to add and remove their pgp keys after they are logged in
* [x] respect two factor auth rules

I mean that we will encrypt any emails sent to them. Maybe they won't expect that or they will want to read the emails on their phone, where they might not a copy of their PGP key, so they should be aware of that.