Added several test verifications to identify AVL balancing bug.

Issue #105 speculates the existence of these bugs, and this commit includes the tests to prove the bugs exist. With this change, 4 tests fail because the AVL trees for sets and dictionaries are not quite balanced.

There are a few small product changes in this commit to make the product's AVL trees verifiable from the test assembly. Among them is the extraction of an IBinaryTree base interface from the IBinaryTree<T> interface. This is because it's an implementation detail for the collection types what T actually is within the binary tree (it isn't always the same T as the public facing collection type). And when verifying balance of AVL trees, the T itself isn't interesting -- it's all about node count, height, and left/right trees.
Fix AVL tree balancing in dictionary and set collections.

There were certain tree mutations that resulted in a tree that was imbalanced by +/- 2 instead of the maximum allowable +/- 1.

Fixes #105

Amusing little factoid: this immutable AVL tree implementation was originally shamelessly taken from Eric Lippert's excellent blog, which shares this bug: http://blogs.msdn.com/b/ericlippert/archive/2008/01/21/immutability-in-c-part-nine-academic-plus-my-avl-tree-implementation.aspx
Fix capitalization of "AVL" in test helper methods.
Update the status badge in readme.md with the correct Appveyor build URLs.
Merge branch 'master' into readme-update
Merge branch 'TreeBalancing'
Merge https://github.com/dotnet/corefx
Fix xml doc comment for ImmutableArray item4 parameter.
Rename binary of System.Xml.XPath.XDocument tests
Merge branch 'master' of https://github.com/dotnet/corefx into XmlTestCoverageMerged