json: align json.mli with the [type t = json] convention
The implementation has used [t] as the canonical name for the JSON
value type for a while, but the .mli still referenced [json] in
many signatures (constructor types in [Value], encode/recode
return types, etc.). Switch the public surface to [t] so the
generated docs match the implementation and avoid the visual
"json or t?" ambiguity.
Also fix three [t] vs [codec] type annotations on [t2]/[t3]/[t4]
and [Object.case_codec] - those return codecs, not raw values,
and the .mli was wrong.