claude: migrate to new Json API
- Rename [let jsont] bindings to [let json] across lib/tests/examples,
since the library is now called json (not jsont).
- Drop the [module J = Json.Json] aliases — the AST builders and meta
module sit at the top level of [Json] now.
- Replace [Json.t] used as a codec with [Json.Codec.Value.t]; Json.t is
just the AST type.
- Use [let open Json.Codec in ...] inside schema definitions so the
resulting code reads closer to the spec it encodes.
- Swap [Jsont] references for [Json.Codec] (codec combinators) or plain
[Json] (AST builders) depending on what the call site actually builds.
- Hand-build JSON Schema examples with Json.object' / Json.list / Json.mem
rather than the half-decoded GADT form that used to sit under
Json.Codec.Object.
- Codec callers now see [(_, Json.Error.t) result]; surface the structured
error via [Json.Error.to_string] at process boundaries, and introduce
[encode_or_raise] / [decode_or_raise] helpers in [client.ml] so the
only [Err.ok] call sites carry a meaningful ~msg tag.
- [Json.to_string_exn]/[of_string_exn] round-trips where the caller was
pattern-matching Ok/Error collapse to the plain form that raises (the
exn is the callers' intent; returning the error and then pattern
matching was just dead code).