C++ interval tree implementation

Initial commit.  Includes rudimentary test.
use templates to move header definitions to container-like format

This allows the association of arbitrary datatypes with the Intervals
contained in IntervalTrees, allowing better reuse when specific data is
meant to be associated with the interval tree.
default, copy, and assignment constructors

This allows standard use in other containers.
fix bugs with copy and assignment operators
added MIT license
return required for assignment operator
Start of using key'd types
Configuring missing template info
Improving readability.
Fixing: Implicit conversion loses integer precision: 'size_type' (aka 'unsigned long') to 'value_type' (aka 'int').
Following Scott Myers’ advice.
See http://stackoverflow.com/questions/213121/use-class-or-typename-for-template-parameters for details.
Templatizing test helper functions.
Cleanup.
Fixing indentation.
Setting default for key type to int.
Using default key type in test.
Merge pull request #1 from JanX2/master

Improving readability and unifying forks
Removed default type declarations in three templated functions
which were causing problems for cmake
Merge pull request #2 from arrogantrobot/cmake_ify

Removed default type declarations in three templated functions
Fix incorrect behavior for small number of intervals.