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.
I know this PR is already merged, but I wonder if we should reword this for the developers who speak English as a second language. I'm of the opinion that making their lives easier makes using urllib3 a better experience. They don't have to struggle with words like `erroneous`.