Reworked the rangestore to be more like an interval tree.

At this moment this is just a proposed design to be tested against the current design. It is attached as a pull request to allow other people to critique it.

Currently just running against the standard set of unit tests, this implementation actually pulls less data back to the client than the current implementation.  This number does not include an extra test included in this branch.
current -> pulls back 75 ranges
rework -> pulls back 45 ranges

More unit tests need to be developed to check against worst case scenarios.

Additionally this solves the bug brought up in Issue #25.