OpeeratorExpression constuctors made static

The OperatorExpression constructors have been replaced with four static
methods named OperatorExpression.make(). Two of these are vararg
methods, so some places no longer need to make their own ArrayList of
arguments.
Expressions keep references to their parents

Expression has a new instance variable, parent_, which has a getter and
a setter, and which defaults to null. When an OperatorExpression is
created, the arguments are duplicated and the duplicates' parent is the
new OperatorExpression.
Expression duplicate replaced with clone

Expression now implements Cloneable and has a public abstract clone()
method. Each Expression subclass implements clone(). Most calls to
duplicate() have been replaced with clone(); some were redundant and
have been removed.