The shape::Shape struct provides a recursive, immutable, reference-counted
tree/DAG format for representing and enforcing common structures and usage
patterns of JSON-like data.
The ShapeCase enum attempts to capture all the common shapes of JSON
values, not just the JSON types themselves, but also patterns of usage (such
as using JSON arrays as either static tuples or dynamic lists).