Update cardinality estimation for Apply

When producing execution plans, a solution for recursive query building
is to stitch together by using Apply. A SingleRow doesn't actually produce
a single row when inside Apply. It is named SingleRow because that is
how many rows this operator will yield per open()/close() session, but the
total number of rows might be a value much higher. This commit changes
so the cardinality model returns the total number of rows, not just 1.
Why do we not need a special case for NodeHashJoin?