refactor types in SL+LPO constraint

I've refactored the `Term` type

    data Term var node = Var  var | Node node [Term var node]

so that labels are part of the nodes' signature:

    type LabeledTerm label = Term Symbol (Symbol,label)