Add AVL Tree implementation with god-awful remove method

I'm happy with pretty much everything apart from the remove method's
spaghetti recursion. The implementation is efficient memory-wise because
there are no parent pointers or heights stored in the nodes.
Rename directory