crypto: merge Cipher and Decipher
crypto: refactor Hmac
crypto: refactor Hash
crypto: refactor Sign
crypto: refactor Verify
crypto: refactor DiffieHellman
crypto: replace BIO_free with BIO_free_all

From OpenSSL's documentation:

"If BIO_free() is called on a BIO chain it will only free one BIO
resulting in a memory leak."

and

"BIO_free_all() frees up an entire BIO chain, it does not halt if an
error occurs freeing up an individual BIO in the chain"