Changing the architecture of the solution

I realized that an F-Structure, conceptually, is rather what the
SolutionFStructure looked like. It's the way we can allow cyclic references and
what not without getting into an infinite loop. Using the ID system, where
feature mappings go to IDs instead of full F-Structures, gives us more freedom
in how to (perhaps) illustrate F-Structures as well, i.e., drawing lines in
between them.

I'm currently working on hammering out this new representation of F-Structures.
It also will make the solution algorithm simpler, especially when it comes to
checking constraint equations. I can resolve the F-Structure (so there is no
need for a store of identifications of IDs) and then check the constraints.
Trudging along to rework the solution algorithm...
Fixed errors, but why no filter on StateT?

Next order of business should be how to get filter expressions to work with
StateT. My impression was that it should work when the underlying monad is a
MonadPlus, which list totally is...right?