let, let*, checks in local and parseExpTree, optimize define

Added check in define to add local only if there are side effects, let
that evaluates all the binds all, let* that evals and binds one by one,
check in parseExpTree that calls eval() only if it is Lambda or special
form