TraceSplitSemElem: first version; not even compiled yet

This is copied and modified from KeyedSemElemSet
TraceSplitSemElem: convert to use new Guard class as guards

Still probably doesn't compile though (but it is never compiled so it is okay)
TraceSplitSemElem: add new LiteralGuard class
TraceSplitSemElem: got it compiling
REORDER THIS COMMIT  Equalities guard: initial version (still a SemElem)
TraceSplitSemElem: fix three mistakes in (Literal)Guard only discovered later

* Forgot to make virtual functions in Guard "interface" pure
* Outputting value wrong in LiteralGuard
* Hashing value wrong in LiteralGuard
TraceSplitSemElem: Add tests for LiteralGuard
TraceSplitSemElem: move a test fixture to a header
Refactoring tests: make fixture for shortest path weights
Test refactoring: no longer declare separate "distance_ten" objects locally

Just use the fixture directly