refactor B-trees; add support for unlimited key length in immutable B-tree