loading: precompile all packages of a `using A, B` statement in one session (#63186)
* loading: precompile all packages of a `using A, B` statement in one session
`using A, B, C` lowers to one `_eval_using` call per package, so each
`require` started its own parallel precompile session, and extensions
that only became loadable once a later package loaded trailed as further
sessions. The REPL already extracts the package names from the lowered
statement for the missing-package hook, so use that list to precompile
every not-yet-cached package of the statement, plus the extensions the
loaded set makes loadable, in a single session before evaluating it.
The background precompile task passed requested packages to the driver
by name, which cannot resolve an extension from `Main`, so any request
naming an extension returned nothing and extensions were compiled
serially; pass the ids through instead.
The `Precompiling` loading messages drop the uuid when the name maps to
a single uuid across the load path's manifests, name extensions by their
parent, and name the dependency that is loaded at a different version.
The driver's header says "Precompiling packages..." when specific
packages were requested rather than the whole project.
Fixes #63185
Assisted-by: Claude Code (Fable 5.1)