Adds HashSet and NullToNotNull Linq operation.

Previously, NullToNotNull was in the Zoltu.Linq.NotNull library.  By moving it into this library instead, I can now make use of it for building out new collections.  This simplifies a number of methods, particularly in HashSet which  uses a lot of enumerables.

Improves the quality of the NotNullToNull and NullToNotNull enumerables by making them provide more accurate errors and be more robust in the face of malicious usage.

Adds a sealed EmptyEnumerable that implements IEnumerable, IEnumerator, INotNullEnumerable and INotNullEnumerator.  It explicitly implements everything and has a private constructor.  There is one static Instance member on it that will return a pre-allocated empty enumerable.  This is useful in situations where you want to have an enumerable/enumerator with nothing in it.  Rather than instantiating a List<T> or NotNullList<T> you can just use EmptyEnumerable<T>.Instance.