Changes LINQ queries to work on a null source.

This allows users to do foo.Where(...) without having to first check if foo is null.  In most cases, an empty enumerable or default value will be returned.  In First/Single, an InvalidOperationException is thrown indicating the source sequence is null.  This allows user code to catch only InvalidOperationExceptions on First/Single rather than having to catch both InvalidOperationException and NullReferenceException.
Adds ToDictionary.