WFA::collapseTransitionsForwardFrom: New function. Untested yet.

Also add WFA::outgoingTransSet(state,symbol)
ITrans: rename 'equal()' to 'equalIgnoringWeight()'

Because that's what it does, after all. :-)
WFA::equal: new function that determines if 2 WFAs are equal
WFA::eraseState [1/3]: remove states from state_map too

That way we can just iterate over state_map instead of doing constant lookups to see if a state is REALLY present or not.

This version is buggy; it will be fixed over the next couple of commits
WFA::clear [2/3]: fix bug with state removal.

Old version was removing states from a collection it was iterating over.
WFA::eraseState [3/3]: fix memory bug I introduced a little bit ago

Original version didn't remove states from state_map. I didn't want this (keeping state_map and Q in sync) so I removed and deleted them. But that caused other problems, so now WFA stores separately a list of states it should delete on its destruction.

This is kind of bad that we have to do it this way, but I don't see any other alternative that keeps the 'state_map ~ Q' invariant I want and doesn't change everything.
Test fixture header: add inclusion guards
Test fixtures: move some WFA fixtures to header
WFA::removeStatesWithInDegree0: new function

Untested; tests added next commit
WFA::removeStatesWithInDegree0: tests
WFA::collapseEpsilonChains: Add broken version
WFA::equal: fix bug:

It's possible to leave an empty TransSet in WFA::kpmap; compensate for this
WFA::equal: Fix dumbest bug ever: increment wrong iterator
WFA::RemoveStatesWithInDegree0: fix bug

If there are no transitions to a state, we'd never notice that it doesn't have any because it wouldn't be added to the predecessors' data structure. Fix that.
Unit test code: Remove debugging output
WFA::collapseEpsilonChains: fix test cases, which now pass