Create Interval class

Create a simple Interval class for representing a range between 2 points
on a number line.
Create ClassifiedRegion class

Regions in this context are an arbitrary collection of Intevals (one per
dimension).

Each region can have 1 or more class (integer values) associated with
it, as an extra piece of metadata significan to that region.
Fusion: reduce overlap fusion runtime

The previous overlap fusion mechanism was, for each pixel position,
check each image to see if that image contains the current position. If
so, add its value to the fusion for that position.

Certainly we want to fuse one output position at a time to avoid a huge
number of PixelFusion objects, but the #pixels X #images complexity was
killing performance.

We want to do as little work as possible during the fusion process. So,
using the ClassifiedRegion class, fusion with overlap will now spend
some processing time up front to determine each non-overlapping
sub-region, using the associated images as the classification values.

For example, if image 1 and 2 overlap partially, we will come up with
one or more "image 1" regions, one or more "image 2" regions, and one
"image 1 + 2" region.

Positional iteration is then driven by these regions, as each knows
exactly which images to pull values from when fusing.

Time reductions will be seen as a function of the number of images being
fused. This was benchmarked with a dataset with 153 images, which
resulted in a 10X improvement in performance.