Good bye KeyPair, hello SecretKey and PublicKey

Instead of one class to manage both keys, split the responsibility over
two.  Crypto::SecretKey is responsible for generating a keypair, and
might eventually also derive the public key rather than requiring it be
passed in.  The PublicKey class just accepts a string.  Both will reject
invalid strings and have a few helper functions.