Syntax.vars now returns a ExprSet

The returned list was mostly used as a set. Moreover, Syntax.vars actually used
ExprHashSet to compute the result, then converted to a list (which was then
usually converted to a ExprSet).
some whitespace and wibbles

Sorry for the tabs :/
better behaviour for non-backtrack rules

We were backtracking on possible instantiations, whereas it should be fine to
just pick one and go with it.
don't assert purity of formulas under boolean connectives

1) users might want to go beyond coreStar's fragment
2) coreStar might want to ask Z3 for things that are not totally pure