Just another implementation of the AVL tree, this one seems to be simple and pretty