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.
DebuggerTypeProxyAttribute does not work when compiled against .NETCore
The C# EE is not handling proxy type names correctly (for Windows Store or Silverlight apps) if the proxy type is a nested type within a generic class.
Fix is to move the proxy types outside of the generic collection class for each collection type. This fixes the issue against VS2013 and also works with VS2015.
Note that for VS2015, C# EE has itself been fixed to handle this case correctly
Merge branch 'master' of https://github.com/dotnet/corefx
Update the status badge in readme.md with the correct Appveyor build URLs.
Enable open-source signing product and test binaries.

Update our dependency on dotnet/buildtools to Microsoft.DotNet
.BuildTools 1.0.12-prerelease, which includes support for open-source
signing.  Update InternalsVisibleTo to test assemblies to reference
by strong name.
Merge branch 'enable-signing'
Merge branch 'master' of https://github.com/dotnet/corefx
Merge branch 'master' into readme-update
Merge branch 'TreeBalancing'
Merge https://github.com/dotnet/corefx
Fix xml doc comment for ImmutableArray item4 parameter.
Remove dead code that could slow down enumeration.

The SecurePooledObjectUser struct was previously used as part of a 'thread safe' design for recycling stacks used for enumeration of tree-based collections. But the thread-safety effort was imperfect and removed a while back. The empty struct remained as a simple way to avoid having to make several changes to callers.

Stephen Toub recently was looking over the code and pointed out that this leftover code causes the C# compiler to emit try/finally blocks and call no-op code which may be slowing down enumeration, which is a hot path in many scenarios. So taking time to remove it now seems prudent.
Fix to build correctly if the repository root has spaces. For example: "C:\Program Files (x86)\repos\corefx"
Another optimization for ImmutableArray<T>.Builder.Sort to not create Comparer Wrapper for arrays of size 0 or 1
Added a check for array size in the sort methods before the wrapper gets created
Added a testcase to exercise sorting of 1 element array
Merge branch 'PerfTuning'
Merge branch 'master' of https://github.com/dotnet/corefx
Add test coverage for XPath and XDocument
Clean up Xml directory structure