reorganize Supracontext class structure

The old `Supracontext` class was taking care of both the things related
to supracontexts (subcontexts and outcome) and those related to the
lattice-filling algorithm (next, count, index). Separate these out into
reusable interfaces. Rename the old `Supracontext` class to
`ClassifiedSupra` (because it keeps track of its outcome, or class).
Add a new class called `UnclassifiedSupra` that doesn't keep track of
its outcome at all and move the `SupracontextCombiner` code into there.
Change the default `LatticeNode` count to one, since it was always
being set to zero and immediately incremented.

Add a separate test file for the `LatticeNode` functionality.
`Unclassified` still needs to be tested.