crypto: eliminate invalid keys for gpgme.ERR_AMBIGUOUS_NAME in get_key

Previously when Context.get_key raised gpgme.ERR_AMBIGUOUS_NAME crypto.get_key
would not verify the ambiguous keys are actually valid for
signing/encryption.

Now when gpgme.get_key raises ERR_AMBIGUOUS_NAME we elimitate those invalid
keys. If there is only one valid key left we return it, otherwise re-raise