256488d4b4
Thanks to lazy merging, our btree nodes can drop to zero weight at pretty much any time. Unfortunately, we can't really represent non-root zero weight btree nodes, so things break. (Though even if we could, those nodes would become unreachable). Previously we relied on fuzz testing to try to catch these cases, but that turned out to be insufficient. This adds explicit tests covering the cases where btree drops can occur, thanks to the realy-big-attr trick used in similar mtree tests. Sure enough this revealed a bug that can occur when we split a btree node at the same time one of the siblings goes to zero weight. (Remember splits carried out before playing attr-lists). --- Fortunately this is pretty easy to fix. We can just reroute our split code to the normal commit/compact recursion handling if one of our siblings drops to zero, at the cost of some spaghetti. xkcd.com/292 seems relevant here.