json: move bytesrw parser/encoder into codec.ml; shrink json.ml to 78 lines
Codec.Private was only there to let the bytesrw parser (in json.ml)
reach codec-internal helpers across a module boundary. Fold the parser
and encoder into codec.ml instead: the helpers never leave the file,
and Codec.Private collapses from "everything the parser needed" to
just the handful of error helpers json_brr.ml still reaches for from
a separate library.
Also drop [type format = Minify | Indent | Layout]: it was just a
three-state derivation of [?preserve / ?indent]; the encoder record
now carries [preserve : bool] and [indent : bool] directly and the
write paths branch on those.
Wrap the streaming entry points [of_reader / of_string / to_writer /
to_string] in [module Stream : sig ... end] so that [let open
Json.Codec in] no longer shadows callers' local [of_string] helpers
(caught by ocaml-did / ocaml-oci / ocaml-claude). Top-level users
keep [Json.of_string] and friends; the Stream namespace is for the
thin re-exports.
json.ml is now 78 lines: type re-exports, [module Codec = Codec],
top-level wrappers, [module Tape], and the [module Value] AST-layer
convenience wrappers. Everything codec lives in codec.ml.
did.ml had a stray merge marker from concurrent edits; resolve to the
new [failf] name.