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.
I think you can remove the "for now": 63 is a (very) strict upper bound for the deepest a B-tree can be on 64-bit platforms (and 31 on 32-bit ones), and that's assuming that each entry only requires a `uint` to store (including the key, value and all the `Vec` etc. metadata required by the actual b-tree); any b > 2 is exponentially better, and the B-tree nodes requires more storage than that anyway.

(E.g. b = 6 gives an upper bound of 24.)

That said, it seems that `for x in mem::replace(self, BTreeMap::new()).move_iter() {}` should work, maybe?