Throw more informative exceptions.

In #1188 @brandon-rhodes pointed out that we throw some uninformative exceptions when problems arise in urllib3. This would catch the exception and wrap it in a Requests exception, then rethrow it with its original traceback.

I'm on the fence about whether we should do one of the following:

1. Create a new Requests exception for this case (`requests.exceptions.TransportError`?)
2. Import urllib3's exceptions into `requests.exceptions` and export them as our own? (Not great)

Opinions welcome (@sigmavirus24?)