Handle when an OpenSSL error doesn't contain a reason

(Or any other field)

You can reproduce the error by running:

```
treq.get('https://nile.ghdonline.org')
```

from within a twisted program (and doing the approrpiate deferred stuff).

I'm unsure how to craft a unit test for this
Convention in pyOpenSSL seems to be to have sphinx docstrings on test methods, similar to Twisted style.  Can you add one?