Converted BinarySearchTree to an interface and pushed the implementation into AvlTree in preparation for SplayTree which is a BinarySearchTree but doesn't use the same internal structure and therefore cannot inherit the old BinarySearchTree.