Just field reorder
Added CreateSetComparer to HashSet<T>
Added test project stub

This is a class library project with reference to nunit - intended to
import test cases from mono and eventually add new test cases.
Added HashSetTests.cs from mono
Project code fix
Tweaking tests to run on my code base

Currently failing 9 tests
Fixed CopyTo checks
GetHashCode of null set must be 0

Even though GetHashCode is documented to throw when null is passed... we
are matching .NET behavior here.
Try ICollection<T> before going with ProgressiveSet
Added AsCollection
SetEquals will use AsSet
RemoveWhere will use List as cache

There was no advantage on using ProgressiveCollection, also using List
will allow to keep the improvement of casting the IEnumerable to
ICollection when possible.
Fixed IntersectWIth by using Extensions

Extensions.IntersectWith will do a better job.
IEnumerator checks state IEnumerator<T> doesn't

The default implementation of IEnumerator<T> doesn't check for the state
of the enumerator when calling Current (presumibly for a performance
improvement) but the IEnumerator implementation of some classes does
check. We match Microsoft's behavior here.
Overloads of IntersectWith that take comparer

Added overloads for Extensions.IntersectWith that take a
EqualityComparer
Using the new overload of Extensions.IntersectWith
ExtendedEnumerableBase will allow expanding null

Pretty much pointless but versatile to call extend with null
Workaround for HashSet not being ISet .NET3.5

You cannot use AsSet to get a HashSet<T> in .NET 3.5 because in .NET 3.5
HashSet is not an ISet<T> - if all you need is to have Contains and no
duplicates use AsDistinctCollection instead. AsDistinctCollection will
return recognize HashSet<T> otherwise it is identicall to AsSet.
Using AsDistinctCollection instead of AsSet
Revamped NullAwareDictionary

- You will now be able to create a NullAwareDictionary for a non
nullable type
- Added Comparer property
- Handling Serialization