CryptoFailureException is a generic exception thrown by an
CryptoStrategy if encryption or decryption fails. The constuctors of this
exception accept a EncryptionStrategy that will be included in the exception
message. Implementors of EncryptionStrategy should provide a toString method
that exposes *only* information that maybe useful for debugging not passwords,
secret keys, etc.