Improve lookup perf on immutable dictionaries and sets

This commit creates a specialized version of ImmutableSortedDictionary`2.Node that setsTKey as Int32.  This allows the implementation, which is used by both ImmutableDictionary`2 and ImmutableHashSet`1, to avoid multiple interface calls per node during lookups, doing the Int32 comparisons directly rather than going through Comparer<int>.Default, which in turn goes through Int32's IComparable<T>.CompareTo implementation.
Change SortedInt32KeyNode.height from Int32 to Byte.

This decreases the size of the SortedInt32KeyNode on both 32-bit and 64-bit by ~10%.
Addressed PR feedback from AArnott

- Changed height calculations to be checked, to help catch any issues with balancing logic
- Removed unnecessary Requires.NotNullAllowStructs calls for keys we know to be structs
- Changed a couple of "left == null" checks to be the equivalent IsEmpty, for readability
Remove several unnecessary comments
Merge pull request #164 from stephentoub/immut_compare_perf

Improve lookup perf on immutable dictionaries and sets
Update buildtools to version 1.0.14-prerelease
Merge pull request #182 from FiveTimesTheFun/buildtools-14

Update buildtools to version 1.0.14-prerelease
Remove AllowUnsafeBlocks as it's no longer needed
Make immutable collection tests portable
Remove commented out code (responding to PR feedback)
Merge pull request #183 from nguerrera/portable-immutable-tests

Make immutable collection tests portable
Remove unused file: PinnedImmutableArrayTests.cs

The PinnedImmutableArray class no longer exists, but the tests for it
sitting in the tree without being pulled in to the .csproj.
Merge pull request #184 from nguerrera/remove-unused-immutable-file

Remove unused file: PinnedImmutableArrayTests.cs