aa559d30b0
Originally I thought doing a linear search during fetch was going to be the best route for name lookups, since we already needed a O(b) fetch, which set a hard ceiling for name lookup performance. But it turns out we don't need to fetch during btree name lookups unless we're also validating! Now that validation and lookups are disentangled, we can do a binary search over the rbyd to drop our name lookup down to O(log(b)^2). Two other motivations for this change: 1. This removes the name search from lfsr_rbyd_fetch, which has been surprisingly tricky to get right. 2. Now that lfsr_rbyd_fetch doesn't need to follow the create/delete history to find and reconstruct the state of names, we only need to know the create/delete state of tags post-fetch, freeing up the rbyd encoding to be more flexible. The next thing I plan to do is drop on-disk remove tags, for example. This drops the total btree namelookup cost from O(b log_b(n)) to O(log(b)^2 log_b(n)).