ocaml-json: add skip-parse fast path for Json.ignore
Add a new [Ignore : unit t] constructor to [Json.Repr.t] and a
dedicated [skip_json_value] function in json_bytesrw that advances
past the value at the byte level without:
- allocating token buffers or accumulating characters per byte
- calling float_of_string on numbers
- decoding \\\"/\\\\/\\u escapes (only recognises the backslash for
string-boundary tracking)
- allocating DOM nodes
[Json.ignore] is redefined to use this constructor; existing callers
(e.g. [Object.mem field Json.ignore] for field-access decoding) pick
up the fast path automatically.
Benchmark (simdjson corpus, field-access mode):
geomean speedup 1.52x -> 2.46x
Allocations dropped sharply in the field mode: canada.json from
69 MB/iter to 10 MB/iter (7x), citm_catalog.json from 9.8 MB/iter to
1.9 MB/iter (5x). DOM mode unchanged.
A further step to hit 4x would bypass nextc's per-character UTF-8
decoding in the skip paths and scan raw bytes directly.