Added SingleOrThrow
returned type must be strongly typed
Add version of SingleOrThrow which accepts a predicate.
Merge branch 'pr/n2_salfab'

Conflicts:
	src/LinqContrib/EnumerableExtensions.cs
Code cleanup.
Rename T to TSource.