Tweaking SingleStepReduce

Changing single step reduce to use scheduled subset of reduction keys
instead of entire set of reduction keys.
Better optimization during the reduce phase - apply limits earlier in the pipeline so we don't have to deal with repeated calls
More tests to show that WhereIn works as expected

Three more tests to show that Query<T>.Where(x =>
x.Something.In(collection)) works the same way as
LuceneQuery<T>().WhereIn()