an idea on persisting redirect history when exceptions are encountered

this is a quick idea on an approach to address #4455

within `resolve_redirects` exceptions raised by`Session.send` are caught. If they match a given set of tests (currently just the base `ConnectionError` class), the `resp` is replaced with an instance of an exception class used to hold bad response data.  Then a new exception is raised. 

This makes handling these types of errors similar to handling items without redirects for most users (i did not consider the legacy ways of using requests)

The immediate ideas/concerns I have on this:

1. It might make sense to have a global "NotARealResponse" object that stands in for a `Response` object and can contain connection/history info when there is no immediate response.  I'm not sure this is the only use-case for this.

2. I thought about extending the current exception with request/response data, but this seemed more appropriate.

Just to be clear, this is only submitted for discussion/illustration of the other ticket.  This is not a PR for merging.

# [Codecov](https://codecov.io/gh/requests/requests/pull/4456?src=pr&el=h1) Report
> Merging [#4456](https://codecov.io/gh/requests/requests/pull/4456?src=pr&el=desc) into [master](https://codecov.io/gh/requests/requests/commit/c98e30b5cb812a5efe0f6c9c40861009069932b7?src=pr&el=desc) will **decrease** coverage by `0.25%`.
> The diff coverage is `66.66%`.

[![Impacted file tree graph](https://codecov.io/gh/requests/requests/pull/4456/graphs/tree.svg?token=mZGswIiXLa&src=pr&height=150&width=650)](https://codecov.io/gh/requests/requests/pull/4456?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master    #4456      +/-   ##
==========================================
- Coverage   90.14%   89.89%   -0.26%     
==========================================
  Files          15       15              
  Lines        1543     1554      +11     
==========================================
+ Hits         1391     1397       +6     
- Misses        152      157       +5
```


| [Impacted Files](https://codecov.io/gh/requests/requests/pull/4456?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [requests/sessions.py](https://codecov.io/gh/requests/requests/pull/4456/diff?src=pr&el=tree#diff-cmVxdWVzdHMvc2Vzc2lvbnMucHk=) | `93.95% <66.66%> (-1.61%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/requests/requests/pull/4456?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/requests/requests/pull/4456?src=pr&el=footer). Last update [c98e30b...9dc04b3](https://codecov.io/gh/requests/requests/pull/4456?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


In an effort to clean up the issue tracker to only have issues that are still relevant to the project we've done a quick pass and decided this issue may no longer be relevant for a variety of potential reasons, including:

* Applies to a much older version, unclear whether the issue still applies.
* Change requires a backwards incompatible release and it's unclear if the benefits are worth the migration effort from the community.
* There isn't a clear demand from the community on the change landing in Requests.

If you think the issue should remain open, please comment so below or open a new issue and link back to the original issue. Again, thank you for opening the issue and for the discussion, it's much appreciated.