Implemented some new optimizations where we avoid rebalancing the tree for Insert/Delete operations when the operation doesn't actually modify the tree.
Replaced the ExtractMin/ExtractMax/TryExtractMin/TryExtractMax methods of SetTree with DeleteMin/TryDeleteMin -- ExtractMax was actually just duplicating DeleteMax.
Moved the Comparison method of SetTree towards the top of the file so it's less distracting when working on the rest of the code.