Fleshed out the EncryptedSecretKey wrapper to allow easy encrypting/decrypting

Added some convenience methods to Keys (again) to handle getting Keys from byte encodings
Fixed the convenience method to get an AES key from its bytes
EncryptedSecretKey can now be encrypted twice with a private and public key

This guarantees both authenticity of the sender (private key bearer) and the privacy of the receiver (whose public key we used)