Fix colref in preprocessing for SubqueryALL with outer refs
Fix colref in preprocessing for SubqueryALL with outer refs

The commit 8f4c96e, introduced adding a project node on top of group by
for outer references. The changes work fine for CScalarSubqueryAny as
in a later preprocessing step, the CScalarSubqueryAny with colref gets
processed to CScalarSubqueryExists (no colref). Whereas for
CScalarSubqueryAll, this colref would not be adjusted and still point to
the original colref, causing ORCA to generate a plan that would either
cause incorrect results or segment crash when executing the query.

Consider the following query,
select b from foo where b not in (select distinct b where c>1 );

The above query will get preprocessed as shown below:
```
Algebrized query:
+--CLogicalSelect
   |--CLogicalGet "foo" ("foo"), Columns: ["a" (0), "b" (1), "c" (2), "ctid" (3), "xmin" (4), "cmin" (5), "xmax" (6), "cmax" (7), "tableoid" (8), "gp_segment_id" (9)] Key sets: {[3,9]}
   +--CScalarSubqueryAll(<>)["b" (1)]
      |--CLogicalGbAgg( Global ) Grp Cols: ["b" (1)][Global], Minimal Grp Cols: [], Generates Duplicates :[ 0 ]
      |  |--CLogicalSelect
      |  |  |--CLogicalConstTableGet Columns: ["" (10)] Values: [(1)]
      |  |  +--CScalarCmp (>)
      |  |     |--CScalarIdent "c" (2)
      |  |     +--CScalarConst (2)
      |  +--CScalarProjectList
      +--CScalarIdent "b" (1)

Algebrized preprocessed query:
+--CLogicalSelect
   |--CLogicalGet "foo" ("foo"), Columns: ["a" (0), "b" (1), "c" (2), "ctid" (3), "xmin" (4), "cmin" (5), "xmax" (6), "cmax" (7), "tableoid" (8), "gp_segment_id" (9)] Key sets: {[3,9]}
   +--CScalarSubqueryAll(<>)["b" (1)]
      |--CLogicalGbAgg( Global ) Grp Cols: ["ColRef_0011" (11)][Global], Minimal Grp Cols: ["ColRef_0011" (11)], Generates Duplicates :[ 0 ]
      |  |--CLogicalProject
      |  |  |--CLogicalSelect
      |  |  |  |--CLogicalConstTableGet Columns: ["" (10)] Values: [(1)]
      |  |  |  +--CScalarCmp (>)
      |  |  |     |--CScalarIdent "c" (2)
      |  |  |     +--CScalarConst (2)
      |  |  +--CScalarProjectList
      |  |     +--CScalarProjectElement "ColRef_0011" (11)
      |  |        +--CScalarIdent "b" (1)
      |  +--CScalarProjectList
      +--CScalarIdent "b" (1)
```

The colref for CScalarSubqueryAll(<>) is ["b" (1)], whereas the
projected column underneath is "ColRef_0011" (11).
This commit, fixes the colref by creating a new CScalarSubqueryAll
operator with the colref as projected from the ProjectList below it.
Now, for the above query, the preprocessed query is :

```
Algebrized preprocessed query:
+--CLogicalSelect
   |--CLogicalGet "foo" ("foo"), Columns: ["a" (0), "b" (1), "c" (2), "ctid" (3), "xmin" (4), "cmin" (5), "xmax" (6), "cmax" (7), "tableoid" (8), "gp_segment_id" (9)] Key sets: {[3,9]}
   +--CScalarSubqueryAll(<>)["ColRef_0011" (11)]
      |--CLogicalGbAgg( Global ) Grp Cols: ["ColRef_0011" (11)][Global], Minimal Grp Cols: ["ColRef_0011" (11)], Generates Duplicates :[ 0 ]
      |  |--CLogicalProject
      |  |  |--CLogicalSelect
      |  |  |  |--CLogicalConstTableGet Columns: ["" (10)] Values: [(1)]
      |  |  |  +--CScalarCmp (>)
      |  |  |     |--CScalarIdent "c" (2)
      |  |  |     +--CScalarConst (1)
      |  |  +--CScalarProjectList
      |  |     +--CScalarProjectElement "ColRef_0011" (11)
      |  |        +--CScalarIdent "b" (1)
      |  +--CScalarProjectList
      +--CScalarIdent "b" (1)
```

greenplum-db/gporca,greenplum-db/gporca,greenplum-db/gporca,greenplum-db/gporca