Support frozen sync without workspace manifests (#22018)
## Summary
Allow `uv sync --frozen` to discover `uv.lock` when the workspace
manifest is unavailable. We emit a preview warning unless
`--preview-features frozen-lockfile` is enabled. When the workspace
manifest is present, we use its configuration, including source mappings
for extra build dependencies. When a member manifest remains available,
its build dependency sources are also used.
Lockfile-only sync requires revision 5 or later and uses the selected
member's recorded default groups and group Python requirements, matching
frozen sync with a manifest. Non-project workspace roots require
explicit group selection because their defaults are not recorded, and
their group-specific Python requirements are also unavailable. Local
packages still need their source trees and build metadata to be
installed.
This also enables `uv workspace metadata --frozen --sync` without a
workspace manifest.