Added .equals(), .clone() for expression trees

Also changed object oriented design pattern slightly to allow for
instanceof