This is similar to nodetreenode in revlog.c. We give it
a higher level feeling for ease of handling in Rust context
and provide tools for tests and debugging.
The encoding choice is dictated by our ultimate goal in this
series, that is to make an append-only persistent version of
nodetree: the 0th Block must be adressed from other Blocks.
i think s/valency/arity/ is a more common term for it