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.
So ``%b`` is technically a locale specific abbreviated name. Is OpenSSL generating them in a local specific, or will this break on, say, de_DE?

```pycon
>>>> import datetime
>>>> import locale
>>>> d = datetime.datetime.utcnow().strftime("%b %d %H:%M:%S %Y GMT")
>>>> d
'Dec 15 21:57:39 2014 GMT'
>>>> locale.setlocale(locale.LC_ALL, "de_DE")
'de_DE'
>>>> datetime.datetime.utcnow().strftime("%b %d %H:%M:%S %Y GMT")
'Dez 15 21:58:27 2014 GMT'
>>>> datetime.datetime.strptime(d, "%b %d %H:%M:%S %Y GMT")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/alex_gaynor/.pyenv/versions/pypy-2.4.0/lib_pypy/datetime.py", line 1708, in strptime
    struct, micros = _strptime(date_string, format)
  File "/Users/alex_gaynor/.pyenv/versions/pypy-2.4.0/lib-python/2.7/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data 'Dec 15 21:57:41 2014 GMT' does not match format '%b %d %H:%M:%S %Y GMT'
```