Remove redundant deselection

Expression's deselectRecursive method deselected itself twice. Now it
doesn't.
New method "contains" in OperatorExpression

An operatorexpression "contains" another expression if that expression
is an argument, an argument to an argument, or so on.
Substitution doesn't rebuild trees unnecessarily

Expression.substitute() now checks that the expression contains the
thing being substituted before building a new tree.