Refactor of the Range Store implementation

Major changes:
Use a helper class to implement required fuctions for data types to allow the range store to be datatype agnostic. Issue #13
Added a delete method.
Changed the implementation of the main query iterator to break up the logic into smaller easier to manage pieces (No Api Change). Issue #1

Minor changes:
Added a lot of unit tests.
Added license headers.