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.
Does that make sense, or should we baily eagerly? Hoenstly not sure.

On Sun Dec 14 2014 at 4:41:33 PM Paul Kehrer <notifications@github.com>
wrote:

> In docs/x509.rst
> <https://github.com/pyca/cryptography/pull/1499#discussion-diff-21801508>:
>
> > +
> > +    .. versionadded:: 0.7
> > +
> > +    An enumeration for X.509 versions.
> > +
> > +    .. attribute:: v1
> > +
> > +        For version 1 X.509 certificates.
> > +
> > +    .. attribute:: v3
> > +
> > +        For version 3 X.509 certificates.
> > +
> > +.. class:: InvalidX509Version
> > +
> > +    This is raised when an X.509 certificate has an invalid version number.
>
> When accessing version at the moment. We don't look inside the cert to
> extract the version until the attribute is accessed.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/pyca/cryptography/pull/1499/files#r21801508>.
>