[WIP] Simplify Cipher Encryption/Decryption Interfaces in OpenSSL

OpenSSL has some methods that allow a bunch of duplicate code to be removed. Let's make use of them.

This change would allow us to potentially go back to a single CipherContext class for encryption/decryption if we wanted to.