Moved some methods to their own files.
Changed SelectMany to Flatten.
Added more argument null checks.
Added null check for type parameter.
Changed assembly version scheme.