Hoist `WorkspacePython` resolution out of `ProjectInterpreter::discover` (#19103)
Claude actually did fine on the commit here ("hoist" is my new favorite
refactor term)
> `ProjectInterpreter::discover` previously called
`WorkspacePython::from_request`
internally, so `ProjectEnvironment::get_or_init` had to either resolve
the
request a second time to decide upgradeability or accept a stale check
against
the CLI argument only.
>
> Make callers resolve `WorkspacePython` once and pass it in. `discover`
now takes
the resolved struct directly and no longer needs `project_dir` or
`no_config`.
Needed for
https://github.com/astral-sh/uv/pull/19102#discussion_r3119209117
Co-authored-by: Claude <noreply@anthropic.com>