Fix Socket closing on connection errors

* Merged #344 
* Merged #346 
* Adds `ConnectionError` exception which wraps socket errors and HTTPExceptions from httplib.
* Adds support for `retries=False` which raises exceptions immediately without wrapping them with `MaxRetryError`.
* Minor cleanup.