Optimized `average`;
Optimized `any`;
Refactor `aggregate`;
elementAt(OrDefault): changed behaviour and fixed bug;
first(OrDefault): changed behaviour and fixed bug;
last(OrDefault): changed behaviour and fixed bug;
orderByDescending: add `comparer` parameter;
select(Many): added lambdas and tests;