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

Entering nothing as a PIN results in an error, `Two factor auth not configured.` Perhaps we should check that `totpToken.length == 6` or use a regex matcher `\d{6}`?