Pyopenssl test crypto

This contains the set of changes and additions necessary for pyOpenSSL's `OpenSSL.test.test_crypto` test module to pass.

This branch is stacked on top of the branch for https://github.com/pyca/cryptography/pull/331 so you probably want to review that first.