feat(odoc): add return modes, type param jkinds, value modalities and tests
Extends OxCaml mode/layout support in odoc with three new features:
1. Return-side mode annotations on arrows (e.g. `string -> int @ local`)
- Arrow type extended from 4-tuple to 5-tuple with ret_modes
- Both cmi and cmti loaders extract return modes from mret
2. TypeDecl parameter jkinds (e.g. `type ('a : float64) t`)
- param_desc.Var extended with optional jkind string
- cmi path extracts from Tvar's jkind, cmti from parsetree annotation
- Renderer shows `('a : jkind)` syntax in format_params
3. Value modalities (e.g. `val x : int @@ portable`)
- Value.t extended with modalities string list
- extract_modalities replicates compiler's implied-modality filtering
- Renderer shows `@@ modality` after type annotation
Includes cram test (OxCaml-only, gated with enabled_if) verifying HTML
output for all three features. Test infrastructure has pre-existing
OxCaml compat issues preventing `dune runtest`; assertions verified
via manual simulation.
Builds cleanly with both standard OCaml and OxCaml compilers.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>