This is the core of buildTrie. The interface, and stub, above, just adds
an empty CarriedTrieNodeRef.
We build trie nodes in depth first order, which is also in key space
order. Every leaf node is referenced as a slot in a parent internal
node. If two adjacent slots [in the DFO] hold leaf nodes that have
no split point, then they are not separated by a split point either,
because there's no place in key space for that split point to exist.
When that happens, the leaf nodes would be semantically identical, and
we reuse the object. A single CarriedTrieNodeRef "ref" lives for the
duration of the tree-walk. ref carries a potentially reusable, unsplit
leaf node for such reuse until a leaf node with a split arises, which
breaks the chain until we need to make a new unsplit leaf node.
Note that this use of CarriedTrieNodeRef means that for internal nodes,
for internal nodes if this code is modified in any way we still need
to make or fill in the subnodes in key space order.