Layered merge over an owned [Value] tree.
One walk, one value type. Every format parses into [Value] before merging,
so JSON and TOML layers stack without a conversion in the middle. This crate
knows nothing about files, formats or the command line; parsing, emission and
provenance are all the caller's job.
thiserror and indexmap are the only dependencies — neither is a format
crate. cargo tree -p knf-core --depth 1 is the enforcement.
The path vocabulary lives here too ([Seg], [RefPath]), one module over.
It is pure text handling and needs nothing this crate does not already have,
and putting it here is what keeps one spelling and one renderer for the key
paths that both the merge errors and ${...} references have to display.