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.

Depends on #1498.
Apparently `BIO_get_mem_data` is only useful for memory BIOs so I don't want to generically call the `_read_mem_bio` method `bio_to_bytes`. I am going to move them to live next to each other in the backend though.