Make RSA usage opaque
Make RSA usage opaque

This changes all of our interaction with RSA objects to be opaque.

We were previously looking into the RSA object for our defensive modulus checks.
There were two choices to get around this:

- Remove the nonull modulus check
- Make a portable check that depends on the OPENSSL_VERSION macro

I went for the second option. See https://www.openssl.org/docs/manmaster/crypto/RSA_get0_key.html
for the new RSA accessor API.

colmmacc/s2n,awslabs/s2n,PKRoma/s2n,colmmacc/s2n,bpdavidson/s2n,wcs1only/s2n,colmmacc/s2n,wcs1only/s2n,colmmacc/s2n,raycoll/s2n,PKRoma/s2n,wcs1only/s2n,awslabs/s2n,awslabs/s2n,PKRoma/s2n,bpdavidson/s2n,raycoll/s2n,alexeblee/s2n,raycoll/s2n,wcs1only/s2n,wcs1only/s2n,jldodds/s2n,gibson-compsci/s2n,gibson-compsci/s2n,colmmacc/s2n,alexeblee/s2n,jldodds/s2n,awslabs/s2n,wcs1only/s2n,bpdavidson/s2n,PKRoma/s2n,PKRoma/s2n,gibson-compsci/s2n,colmmacc/s2n,jldodds/s2n,bpdavidson/s2n,alexeblee/s2n,PKRoma/s2n,raycoll/s2n,gibson-compsci/s2n,bpdavidson/s2n,alexeblee/s2n,awslabs/s2n,jldodds/s2n,jldodds/s2n,bpdavidson/s2n,raycoll/s2n,alexeblee/s2n,gibson-compsci/s2n,awslabs/s2n,alexeblee/s2n,PKRoma/s2n,raycoll/s2n,wcs1only/s2n,PKRoma/s2n,gibson-compsci/s2n,wcs1only/s2n