Fix odoc build with OCaml 5.4.1: Data_types module migration
In OCaml 5.4.1, constructor_description and label_description moved
from Types to Data_types. Add cppo guard for >= (5, 4, 0) that uses
Data_types.cstr_res_type_path and Data_types.lbl_res_type_path
helpers instead of manually matching on Types.get_desc.
This only affects the local occurrence-tracking extensions
(Texp_construct, Texp_field, Tpat_construct matching) which are
not in upstream ocaml/odoc.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>