Support index joins probing with subsets of join keys

This allows us to push index join keys through query shapes that may not allow
all keys to pass through. For example,

  SELECT *
  FROM table1
  JOIN (
    SELECT c1, COUNT(*) AS c2
    FROM table2
    GROUP BY c1
  ) t2
  ON table1.c1 = t2.c1 AND table.c2 = t2.c2;

will be able to send a index join probe key through the aggregation with column 'c1'.
Other similarly supported shapes include joins and projections.
Update IndexSnapshotBuilder to respect cpuTimerEnabled flag of parent context