Add another layer of abstract for the upcoming changes of concurrent streams.
Query the content length of the request, so that we could split it into blocks and download them in parallel.
1. Split the whole request into small blocks and download them in separated HTTP requests.
2. Manually set the content length of the output response.
3. Close the query connection properly.
4. Move raw_streaming_callback to HTTPProxyClient.