driver: find virtual libraries' interfaces by probing the cone
A virtual library's implementation ships its modules as .cmt only; the
.mli and its documentation live with the virtual library, whose
directory is on the implementation's dependency cone (dune's
[implements] emits the META requires). So for each module documented
from a .cmt, probe the cone's directories for a same-name .cmti with
the same interface digest (odoc compile-deps reports it) and use that
as the input. The probe needs only the installed cmti file — not a
documented unit and not another package's partial — so it covers, in
one rule: implementations shipped with their virtual library
(digestif, checkseum — for which the old machinery found nothing,
because dune declares such virtual libraries with an empty archive
string and their cmtis never became units), implementations in other
opam packages, and the voodoo-era input_copy stash.
This replaces both remap_virtual (within-package, hash-map based) and
Odoc_unit.fix_virtual (cross-package, partial-fed), and with the
latter goes find_partials — compile scheduling only ever needed this
run's own units, since dependencies' units are found through -I — and
the input_copy field and stashing. Removing the field changes the
marshalled shape of Odoc_unit.t: partial format bumped to v3.
Partials are now written for a single reader: extra_paths_of_partials.
Verified: digestif and checkseum implementations now document from
the virtual cmti under their own ids; astring, fpath, tyxml, logs,
mirage-clock-unix unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>