Eng 7326 plannode reorder

This pull requests is basically reordering the Projection node and ORDER BY node for step 1. Step 2 will make the Aggregation node and Projection node inline for certain cases.

For some cases we can not reorder the plan node tree for ORDER BY, I regressed it to use the old plans although they are not efficient.
Now I see what you mean: the requirement of hasDistinctWithGroupBy() to be true are already tested in hasAggregateOrGroupby(). Yes, logically it is redundant in this way. Nice catch.