merlint: fix E900/E905 rules + display Code Generation category
E900/E905 now walk the filesystem directly (like E800 interop rules)
instead of using Dune.libraries, fixing the false-negative where
project-scoped rules didn't find Wire users.
E905 now only flags .mli files in packages that actually use Wire.*,
eliminating false positives on merlint/dune.mli and prune/module_alias.mli.
Added "Interop Testing" and "Code Generation" to the display category
list in main.ml (was hardcoded to 6 categories).
Current violations:
- E900: 18 packages use Wire.Codec without c/ directory
- E905: 25 Wire struct_/module_/c_stubs/ml_stubs exposed in .mli