[async] Include prediction id upload request (#1788)
* Cast TraceContext into Mapping[str, str] to fix linter
* Include prediction id upload request
Based on #1667
This PR introduces two small changes to the file upload interface.
1. We now allow downstream services to include the destination of the
asset in a `Location` header, rather than assuming that it's the same as
the final upload url (either the one passed via `--upload-url` or the
result of a 307 redirect response.
2. We now include the `X-Prediction-Id` header in upload request, this
allows the downstream client to potentially do configuration/routing
based on the prediction ID. This ID should be considered unsafe and
needs to be validated by the downstream service.
* Extract ChunkFileReader into top-level class
---------
Co-authored-by: Mattt Zmuda <mattt@replicate.com>