variable field in Abstraction now has type Variable instead of String
added getVariables() method to Expression
getVariables() and getFreeVariables() now returns Set<Variable> instead of Set<String>
Expression.substitute now also takes Variable instead of String
NORMALIZER fixed, but is too slow for now
VariableNameSupplier now takes Set<String> to avoid instead of first variable name
tests fixed