Add test case for LIKE ... ESCAPE.
[OPTIQ-438] Push predicates through SemiJoinRel
[OPTIQ-439] SqlValidatorUtil.uniquify() may not terminate under some conditions
[OPTIQ-435] LoptOptimizeJoinRule incorrectly re-orders outer joins

Re-structure some code to use immutable lists rather than int arrays.

Parameterize Programs.heuristicJoinOrder to use a heuristic join only if there are at least a given number of joins.

Add "dependents" and "locations" tables to "hr" schema.
[OPTIQ-434] FilterAggregateTransposeRule loses conditions that cannot be pushed
Progress on [OPTIQ-436] Simpler SPI to query Table
Progress 10/20.