Detect incomplete reads (content length mismatch)

Requests doesn't do this for us (nor does urllib3).
We need to detect incomplete reads both in the case where
we read the body all at once and also when we stream the
object (i.e a `GetObject` request).