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.
It's strange to have a complex conditional around a complex assert. Maybe combine into 1 complex assert:

    assert( ( ! hasDistinctWithGroupBy() ) || (m_distinctGroupByColumns == null || hasComplexAgg() || displayColumnsContainAllGroupByColumns() );

The assert has so many ways to satisfy it, I'm not sure how useful it is.