[plinq] Add SelectWhere query node

It's able to optimize the two following cases :
 - .Where (e => ...).Select (e => ...)
 - .Where ((e, i) => ...).Select (e => ...)

It's not optimizing Select with an index, because that would mean reimplementing orderable enumerables for the Where node, which main bottleneck is the Barrier.