Test Immutable Avl Tree in Hashtable Iter test.

Signed-off-by: Tim Henderson <tim.tadh@gmail.com>
Added tree types and helpers methods.

The idea is to support generic tree types with minimal effort. You can
treat a binary tree as an ordered tree. All of this comes for free if
you use the convience methods which use some of the binary tree methods
(like Left() and Right()) to generate Children(), ChildCount(), and
GetChild().

The interface is read-only, you can't modify the structure of the trees.
I am imagining that you would need to know what type of tree you had
before you started modifying it anyway.
New traversals for Avl Trees

AVL Trees now implement all the methods specified in the types.Tree
interfaces. This enables easy usage of the different traversals which
are now provided by the tree package.