Added various container classes

* Map: similar to std::map but with a Sawyer naming scheme.

* IndexedList: combination of std::list and std::vector to
  provided constant-time insert, erase, and lookup.

* IntervalSet: similar to std::set<T> where T is an integral
  type, but optimized for cases when large regions of contiguous
  values are stored.

* IntervalMap: similar to IntervalSet but is able to associate
  arbitrary data with each integer.

* Graph: a collection of connected vertices and edges that have
  user-defined data associated with them, and providing constant time
  insert, erase, and lookup.

* GraphBoost: an adapter to give Graph a Boost Graph Library
  interface.  Properties (internal and external) are not implemented
  yet, but can be accessed by the Sawyer API. (FIXME)

* FIXME: Very little documentation, and what is present is possibly
  incorrect in places. This will be fixed shortly.