complete btree rewrite

Replaces BTree with BTreeMap and BTreeSet, which are completely new implementations.
BTreeMap's internal Node representation is particularly inefficient at the moment to
make this first implementation easy to reason about and fairly safe. Both collections
are also currently missing some of the tooling specific to sorted collections, which
is planned as future work pending reform of these APIs. General implementation issues
are discussed with TODOs internally

[breaking-change]

Still waiting on compilation/test/bench stuff locally, but the edit-distance on any errors should be very small at this point. This is ready to be reviewed.
This is definitely an interesting approach. So do you want me to just leave it as is for now? I feel like having a configurable B is a win in the short-term. But breaking-changes are sad.

Re: Strings: there's also the matter of when to do linear search and binary search. If a type has a very expensive cmp, then binary becomes more and more attractive. Also presumably if we're jumping to random places in memory to cmp strings, cache efficiency starts to fall apart?