Marked fields accessed by reflection

These changes are already present in the Develop branch
Style clean up
Removed Lock and Unlock from NeedleLock

Use Capture and Uncapture
Small increase for memory transaction performance
Merge remote-tracking branch 'origin/Fix' into Develop

* origin/Fix:
  Small increase for memory transaction performance
  Style clean up
  Marked fields accessed by reflection
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