Add reference equality check to SetEquals methods.

The SetEquals methods are rather expensive, and it's a quick and super-effective check to compare reference equality between the two collections before engaging in the expensive work.
Add more verifications to ImmutableList.InsertRange perf fix.

InsertRangeRandomBalanceTest currently fails on all of my runs because VerifyBalanced finds height differences of 2 or -2.
One failing run is with rand seed: 1135977305
Call AddRange and InsertRange from corresponding Builder methods
 - This fixes failing InsertRangeRandomBalanceTest
Also refactor AddRangeBalanceTest to add random batches and verify
  balance after each
Merge master
Replace test verification with more stable equivalent.

This verification failed in my own random test method, and I have a replacement that works, so I applied it to this test for stability.
ImmutableList<T>+Builder.AddRange perf boost.
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
Add tests that cover the SetEquals reference equals optimizations.
Add reference equality check to SetEquals methods.
Fix System.Xml.XmlDocument.Tests build on 32-bit Windows
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'