add freeVariables method, improve pretty printing
continue the implementation of typechecking

Implements substitution and renaming
No longer uses scala Symbol internally, but a Name class