X509Backend support in OpenSSL backend

This PR adds a dependency on `enum34`. I am expecting some improvements to be needed in the docs along with potentially some comments required to explain the purpose of some of the tests.

TODO:
- [x] Resolve issue with EC public keys where curve name is not set. (resolved by raising error for now)

Depends on #1498.
I'm not sure either. Would we want to raise exceptions eagerly on all types of errors? I think I'm leaning towards saying we should raise on access (but on a hypothetically validity API we'd error on something like this...which brings up an interesting idea since I sincerely doubt normal chain validation checks certificate versioning).