Introduce Key and KeyRing abstraction

This allows code outside the pgp package to have a concept of
Key/KeyRing without knowing about bouncy-/spongycastle. It also
removes the need for a lot of static classes and helper functions
that retrieve key/keyring properties.

Furthermore it allows proper serialization of Key/KeyRing, allowing
them to be stored as arrays in parcels.

Lastly it combines public and secret key/keyring data in one object,
simplifying a lot of code. PublicKeyRing and SecretKeyRing subclasses
allow using specific types of KeyRings where needed for security
purposes (e.g. to make sure secret keyrings aren't exported like
public keyrings).