Fix issue when uploading to new buckets not in the standard region

This PR implements the expect 100 continue support in order to address the case where you can't upload large files to newly created bucket in the non standard region.  The fix consisted of 3 parts:

* The HTTPConnection/Response subclasses that implements the actual expect 100 continue logic.
* The plumbing to get it into urllib3's connection pools (which requests uses).
* A handler to determine when to inject the Expect header into a request.


cc @danielgtaylor
Since we use `before-call.s3` for the event, is checking the endpoint prefix necessary here?