Remove bulkAddEntry method.
Convert {chooseLeaf} to {chooseChildIndex}.
Optimize insert for non-overflow case.

For the majority of inserts, overflow will (hopefully) not occur. In
this case, we can update the bounds while traversing down to the leaves
instead of doing a traversal to find the leaf, and then a separate
traversal to update the bounds of the parents.
Optimize insert for overflow case.

When overflow occurs, we don't necessarily need to traverse back up to
the root. Once we find a node where the new overflow node can be
inserted, we can stop going up the tree as none of the parent bounds
will change.