Add environment variable to restrict certain keytypes

Per request in http://lists.lca2015.linux.org.au/pipermail/chat/2014-December/000118.html, I've added optional functionality to restrict weaker keys. Logic around finding the keytype follows. This may not be the best way to find out this information, but I couldn't find a saner alternative that didn't require importing possibly-bad keys into the keyring, then removing them again. 

----

The gpg command `--with-fingerprint` allows the parsing of an
ASCII-armored public key without the importing of said key into the
keyring. This can be used to check the strength of a key, and possibly
reject it from being submitted.

Sample fingerprint header: `pub  1024R/AABBCCDDEE 2011-11-11`
In this case, the type is parsed as `1024R`.

Environment variable format is any type of `^pub(\s*)(.+?)/` to
disclude. Example: `1024D,2048R` will reject 1024-DSA and 2048RDA keys.
In the above sample fingerprint header, this key would be rejected.

By default, all key types are allowed.

I think this will fail for EC keys.  `length = pub[16]` from L129 is a misnomer; it gives the (string) curve name (elliptic curve keys do not have "bit-length" but rather an elliptic curve formula) which is not comparable with `int`.  I accept that I am responsible for this misnomer which appears in frasertweedale/gcaff :)

Aside from this, even for DSA/RSA keys I think that `key["length"]` remains a string at this point (but I haven't tried it so I could have missed something).

In summary: EC complicates key processing.

There are a couple of ways forward:

- Switch to a whitelist for algs, and a whitelist for lengths and curves.  Reasonable since there are only a few key lengths for DSA/RSA.
- Continue using bit-length threshold but map curve names to their equivalent RSA bit-length, based on https://tools.ietf.org/html/rfc6637#section-13.  This is probably the least work from where the patch is at now.