cityjson-lib 0.4.0

High-level CityJSON 2.0 read/write facade integrating JSON I/O
Documentation
# JSON Boundary

`cityjson_lib::json` is the explicit boundary layer over `cityjson-json`.

It is not a second JSON implementation.

## Surface

The current public surface includes:

- `probe`
- `from_slice`
- `from_file`
- `from_feature_slice`
- `from_feature_file`
- `read_feature_stream`
- `write_feature_stream`
- `to_vec`
- `to_string`
- `to_writer`
- `to_feature_vec`
- `to_feature_string`
- `to_feature_writer`
- `staged::*`

It also re-exports the lower-level `cityjson-json` read and write option types
that matter for advanced callers.

## Boundary Rules

- `CityJSON` and `CityJSONFeature` are wire forms
- `CityModel` is still the semantic unit returned to callers
- feature streams stay explicit instead of hiding behind document-oriented
  helpers
- probing is available when the caller needs it, but ordinary parsing still
  starts with `from_file` or `from_slice`

## Staged Reconstruction

`json::staged` exists for callers that already own:

- raw feature bytes
- a cached base document
- preassembled feature fragments

Those advanced helpers still return `CityModel`, not transport-specific public
types.

## Error Translation

`cityjson-json` owns the JSON-aware implementation details.
`cityjson-lib` translates them into the stable `Error` and `ErrorKind`
categories exposed by this crate.