Implemented tree-diff + tests

Finds simple term-update diffs given two trees. A term-update is
composed of a LHS and a RHS. The intention is that the LHS should be
replaced with the RHS.

As such it does NOT find added or removed subterms although that might
give better results.

E.g.
(tree-diff "f(x)" "f(x',42)") is currently

f(x) -> f(x',42)

A better description might be

x -> x'

 x
+y

The latter description capture that x was rewritten and an 'y' added
after the location of the original x.

Alternatively:
- x
+ x'
+ y

We might get to that eventually.