Fix the type hierarchy of binary search trees.

 - Extract an interface
 - Have Tree extend TreeNoparent
 - Fix a bug in Tree.delete -- it wasn't correctly fixing parent
pointers