Implement `--emit-index-annotation` to annotate source index for each package (#2926)
## Summary
resolves https://github.com/astral-sh/uv/issues/2852
## Test Plan
add a couple of tests:
- one covering the simplest case with all packages pulled from a single
index.
- another where packages are pull from two distinct indices.
tested manually as well:
```
$ (echo 'pandas'; echo 'torch') | UV_EXTRA_INDEX_URL='https://download.pytorch.org/whl/cpu' cargo run pip compile - --include-indices
Finished dev [unoptimized + debuginfo] target(s) in 0.60s
Running `target/debug/uv pip compile - --include-indices`
Resolved 15 packages in 686ms
# This file was autogenerated by uv via the following command:
# uv pip compile - --include-indices
filelock==3.9.0
# via torch
# from https://download.pytorch.org/whl/cpu
fsspec==2023.4.0
# via torch
# from https://download.pytorch.org/whl/cpu
jinja2==3.1.2
# via torch
# from https://download.pytorch.org/whl/cpu
markupsafe==2.1.3
# via jinja2
# from https://download.pytorch.org/whl/cpu
mpmath==1.3.0
# via sympy
# from https://download.pytorch.org/whl/cpu
networkx==3.2.1
# via torch
# from https://download.pytorch.org/whl/cpu
numpy==1.26.3
# via pandas
# from https://download.pytorch.org/whl/cpu
pandas==2.2.1
# from https://pypi.org/simple
python-dateutil==2.9.0.post0
# via pandas
# from https://pypi.org/simple
pytz==2024.1
# via pandas
# from https://pypi.org/simple
six==1.16.0
# via python-dateutil
# from https://pypi.org/simple
sympy==1.12
# via torch
# from https://download.pytorch.org/whl/cpu
torch==2.2.2
# from https://download.pytorch.org/whl/cpu
typing-extensions==4.8.0
# via torch
# from https://download.pytorch.org/whl/cpu
tzdata==2024.1
# via pandas
# from https://pypi.org/simple
```