ocaml-json: move AST type and value ops to value.ml{i}
Value-centric content (the generic JSON AST and pure operations on it:
meta/set_meta/copy_layout/sort/compare/equal, pretty-printers, the
constructor zoo null/bool/number/int*/string/list/array/object',
find_mem / object_names, zero) moves out of json.ml into its own
module. json.ml re-exposes the AST as [type t = Value.t = ...] so the
public surface is unchanged, and fetches the pretty-printers via
[Value.pp_json] etc. aliases.
This matches the layout already used by ocaml-toml and ocaml-sexp:
a value module for the AST, a main module for codecs and encoders.
Future commits will pull more of the codec combinators into their
own codec.ml{i}.