IMPALA-1281: Restrict re-ordering of cross joins.

This patch restricts the leftmost table ref candidates of cross joins to the
very first join (like we already do for outer/semi joins). Join inversion
is still considered for cross joins.

While conceptually possible, it is tricky to reason about allowing the rhs of
arbitrary cross-join table refs as the leftmost candidate during join
re-ordering. We would have to carefully change the joinOps of all table refs
in between, and ensure to not make those changes in place to avoid "polluting"
the table refs for the next round of join re-ordering (considering a new
leftmost table ref). The safer fix is to restrict the considered orders.

Change-Id: I5fdc323e4a9c2dada06d9aec81769057f7076299
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/4438
Reviewed-by: Alex Behm <alex.behm@cloudera.com>
Tested-by: jenkins
IMPALA-1249: Anti joins have a uni-directional value transfer.

Like left/right outer joins, anti joins have a uni-directional value transfer.
Predicates could be pushed into anti joined plan subtrees if the condition
was inverted, but this patch does not implement this optimization.

No special consideration must be made to prevent predicate assignment
into anti-joined branches because anti-joined tuples are invisible outside
of the On-clause, and therefore, all unassigned conjuncts referencing the
invisible tuple must come from the original join's On-clause. The assignment
of such predicates is already handled correctly.

Change-Id: Ic2b94f6eb57e000ea51e253035e713288b205298
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/4425
Reviewed-by: Alex Behm <alex.behm@cloudera.com>
Tested-by: jenkins