Implements an AVL tree backed treemap. Intended to used as an alternative to D's own associative array. If E set to void, then it works more like a regular tree datastructure, and can be indexed with any type K has an opCmp override. nogcIndexing changes the behavior of opIndex if no match is found. If set to true, indexing returns the default value if no match found, which will need some design consideration. If set to false, indexing throws an exception if no match found. Nodes should have the lesser elements on the left side. Behavior can be changed with less.