[ADAM-462] Coverage region calculation

This commit includes an new class, Coverage, which contains methods for
calculating coverage RDDs from RDDs of Region values.

Also included is a helper class, the PairingRDD class, which calculates
simple 'sliding' and 'pair' methods on sorted RDDs using the
"zipWithIndex trick."

(Joint work with Carl Yeksigian.)
[ADAM-511] Provide Ordering for ReferenceRegion

As covered in issue #511, ReferenceRegion shouldn't extend Ordered, but
rather should be ordered by an Ordering value which can be imported
implicitly.  This will fix some "diverging implicit expansion" errors,
and bring us more in line with the Scala documentation on Ordered (which
is intended to be used in classes that have "a single, natural ordering"
-- a description that doesn't apply to ReferenceRegion).

This commit makes these changes, with the new Ordering provided
implicitly in ReferenceRegionContext.  It also includes corresponding
changes to the ReferenceRegionWithOrientation handling, and (finally)
includes changes to downstream classes that use(d) the Region.compareTo
method.

Also bundled in to this commit are two additional changes to
ReferenceRegion:
* Adding explanations to ReferenceRegion asserts.
* Adding 'extend' to ReferenceRegionWithOrientation, allowing a
  strand-specific extension of the region in a single direction.
[ADAM-512] Creating RegionRDDFunctions

Created RegionRDDFunctions, a class that wraps an RDD[ReferenceRegion]
and provides common join, filter, grouping, and counting methods on top
of that RDD.

Also included is a similar implementation for region-keyed RDDs (i.e.
RDD[(ReferenceRegion, T)] for some type T, and another class that wraps
oriented regions.
formatting