Add `divide` function to `IntMap`

The tree structure used by `IntMap` enables one to very easily divide an `IntMap` into two halves of roughly equal size. This can be a very useful operation (e.g. splitting a B-tree node). The function added by this patch (the name of which is up for discussion) exposes this functionality. This could also be done for `IntSet`, `Map`, and `Set`.