Add AVL implementation

Hi,

we need a AVL implementation, so I started defining an interface for one. Please review!

@neithernut , @theneikos , @manuelmessner
Thank you for reviewing this carefully! The rebase messed this up. Will add a fixup patch, of course.