DAVL-1: first cut at clojure.data.avl/nearest
DAVL-1: tests for nearest
DAVL-1: first cut at subrange (submap, subset)

O(log n) submaps and subsets via clojure.data.avl/subrange.
DAVL-1: split-at
DAVL-1: fix split-at with map coll
DAVL-1: fix split-at, add tests
DAVL-1: fix height calculation in join
DAVL-1: correct exception message in subrange
Fix maybe-rebalance, add tests for AVL invariant
DAVL-1: fix rank calculation in split
DAVL-1: maintain invariant in join