The table tracks deleted slots: probing hands a tombstone back instead of
walking past it, the load factor counts tombstones as well as entries, and a
rehash also runs when the live entries become sparse. The tests cover reinsert
after erase and the growth policy.
insertAfter() places a node next to a known predecessor, removeNode() removes a
node the caller already holds, refreshNode() rebalances after a key changed in
place, and next()/prev() walk the tree in order. findSubTree() now descends with
the transformed query instead of the original key.