working on refactoring to a Label object
test Subcontext and SubcontextList

Also spruce up their `toString()` methods and fix documentation
where the need is obvious.
test Supracontext

Also spruce up documentation and add an `equals` method, useful for
testing.
basic Lattice test

Just test that the chapter 3 data comes out correctly for now.
It seems that some of the lattice or Supracontext API could use
refactoring.
test AnalogicalSet

This is really more of an end-to-end test, since it does not test
in detail, but instead classifies the chapter 3 data and checks for the
correct results.
Merge branch 'moreTests'

The moreTests branch was created after taking a step back when
changes in master broke the classifier. Merge in these tests so
debugging can continue.
Make Label comparable and provide hashCode

`hashCode()` worked previously when `Label` was a simple int, but one
must be provided for it now so as not to break `HashMap`s used here and
there. Add comparable, as well, to facilitate a consistent `toString()`
method for `SubcontextList`, which is important for testing.
fix SubcontextList tests

Update the `toString()` methods to avoid trailing commas and to produce
consistent output (via sorting). Update all tests to passing state;
`SubcontextList` was failing because its iterator was not consistent.
The fix was to use a collection and check for `contains()` returning
true, instead of explicitly following the iterator and checking results
from `hasNext()`.
refine equals method

Refine the `equals` method in `Supracontext` so that two supras are
equal even if their data are in different orders. This fixes
`LatticeTest`. Also add notes about slower methods that are meant for
testing only.
make LabelMasks work with ignoreUnknowns

Change `getLabelMasks` to non-static so that the number of active
features (ones that aren't ignored) can be saved in the labeler and
used in the method, instead of being retrieved from `subList` and being
passed in as a parameter.