Add `SHARED` typed paths to the JSON type
The Issue & Context
Before this PR, each typed path in a JSON column was stored as a separate set of files in MergeTree parts, causing thousands of files and high request overhead on object storage when columns had hundreds of paths.
Root Cause Analysis
The existing storage model allocated distinct files per typed path, leading to excessive file counts and object storage requests, which degraded performance and increased operational costs for wide JSON columns.
Solution Strategy & Architectural Pattern
This PR adds a SHARED modifier for JSON typed paths that groups all SHARED paths into a constant set of shared files per part, using a marks file to index path data offsets within granules, enabling efficient partial and whole-column reads while maintaining compatibility with ALTER operations and existing features.
Key Takeaway for Contributors
When dealing with many small data substreams, consolidating storage into shared files indexed by offsets can drastically reduce file system or object storage overhead without sacrificing fine-grained read efficiency.