ocaml-json: swap Buffer for custom tokbuf + byte-based member lookup
Two changes:
1. Replace [Buffer.t] for the decoder's token/whitespace accumulators
with a minimal [tokbuf] record {mutable bytes; mutable len}. Same
semantics but exposes the raw bytes for zero-allocation content
checks.
2. Add [find_mem_by_token] which iterates the [mem_decs] String_map
comparing each key byte-for-byte against the accumulated name
without materialising a string. Used in [decode_object_basic]: on
hit, [String_map.remove] uses the interned key; on Unknown_skip
(common case for field-access codecs with unknown members), the
name is never allocated; only Unknown_keep and Unknown_error
paths still call [token_pop].
Bench: field geomean 483 MB/s (from 478), DOM 173 MB/s. Modest gain;
the bigger wins will come from tightening [read_json_name]'s allocation
footprint or adding SIMD-style name scanning.