merlint(E610): handle sublib subdirs and module-alias references
Two complementary fixes so a [test/<sub>/test_<mod>.ml] for a leaf
sublib (no internal callers besides a [module X = <Mod>] alias) is
no longer falsely flagged as missing.
- Path matching: the basename branch compared
[Filename.basename lib_path] to the full [expected_path], which
only fired when the test sat directly under [test/]. Replace with
a symmetric basename match plus a sublib-prefix check, so a
library file at [lib/<sub>/<dir>/<mod>.ml] now satisfies a test
at [test/<sub>/test_<mod>.ml].
- Reference detection: extend [is_referenced_in_library] to accept
the canonical alias forms [= <Mod>] and [: <Mod>] alongside the
existing [<Mod>.] and [module <Mod>] patterns. The wrapper
pattern [module Cmd = Xrpc_auth_cmd] now counts as a reference
to [Xrpc_auth_cmd], which it materially is.
Existing cram tests still pass.