Add ResponseError exception class

This class is for erroneous states that occur after a response has been
downloaded from the server. Examples include a server that is raising many 500
server errors (with a Retry object coded to forbid this) or a redirect cycle
that exceeds the specified redirect limit.

In addition, ensures that all objects passed as the `reason` parameter to
MaxRetryError are Exception objects.
It's actually never raised, but it wraps a string descriptor for supplying a `.reason` in a `MaxRetryError`.

Maybe "Used as a container for an error reason supplied in ``MaxRetryError``."?