Fix #require for packages sharing a directory (e.g. compiler-libs)
When multiple findlib packages share a single directory (like
compiler-libs.common, .bytecomp, .optcomp, .toplevel), the old
directory-wide preload check would see all CMIs from all packages
and incorrectly report "partially loaded" — then try to reload
archives that were already linked, crashing with "file already exists".
Fix: use ocamlobjinfo at build time to extract per-CMA unit lists,
embed them in dynamic_cmis.json, and check only the relevant archive's
units at runtime before deciding whether to load its .cma.js.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>