Added more invariant checks within the addRange and union methods. It appears the DIET invariant is broken when returning from a call to AvlTree.Join inside addRange.
Merge branch 'master' into invariants

Conflicts:
	FSharpLex/Collections.fs
Added more invariants to localize the source of the unbalancing.
Fixed a typo in AvlTree.DeleteRoot which caused the tree to be modified incorrectly.
Reimplemented AvlTree.TryDeleteMin/TryDeleteMax using pattern matching instead of calling DeleteMin/DeleteMax.
Made a minor but important optimization in the Delete and Insert methods -- we only rebalance when the tree was actually modified.
Fixed the previous optimization for Insert and Delete so that we return the correct tree.
Merge branch 'master' into invariants
Fixed the computation of the AVL invariant so it checks against the balanceTolerance constant.
Fixed a couple of comparisons within AvlTree.Balance so they're correct.
Fixed the computation of the DIET invariant so it also checks the subtree heights against the balanceTolerance constant.
Fixed the problem in addRange! It turned out that the original OCaml code contained an integer rollover bug (i.e., it should have used the safe_ versions of pred and succ).
Fixed copy-paste error in DeleteMin.
Fixed the same copy-paste issue in TryDeleteMin as was previously in DeleteMin.
Added a DebuggerTypeProxy to AvlTree.
Fixed another small bug in TryDeleteMin/TryDeleteMax.
Removed or commented-out most of the invariant assertions -- it appears the DIET bugs have been resolved.
Fixed error message in Balance.
Merge branch 'master' of github.com:jack-pappas/fsharp-tools