Implement the LINQ operators Distinct, ElementAt, ElementAtOrDefault, Zip
Add missing members to IList<T>, and fix so it is no longer a subinterface of IList