fix: install uv via Docker COPY instead of curl pipe-to-shell (#2770)
Replace the fragile curl-based uv installer with COPY --from=ghcr.io/astral-sh/uv,
which is the Docker-native approach recommended by astral. This fixes 'uv: not found'
errors caused by stale Docker layer cache from the curl install step.
Extract UVVersion constant so there is a single place to bump the version.