SelectMany will check for null early
Fixed null check of SequenceEqual
Reimplementation for some linq methods

- Reimplemented GroupBy, GroupJoin and Join code mostly taken from Mono
- Passsing all tests