Add some test case for tricky queries.
Implement CAST(<string> AS <datetime>) and <datetime> + <interval>.
Add EquiJoinRel, base class for joins known to be equi-joins.
Tune ImmutableIntList's iterators.
Remove the 2-minute wait at the top of the hour for tests of CURRENT_TIME, etc.

For a little variety, we still do it the old way if -Doptiq.test.slow=true.
Add class Holder, a mutable slot that can contain one object.
[OPTIQ-367] PushFilterPastJoinRule should strengthen join type

Make RexNode.isAlwaysTrue smart enough to deal with "c IS NOT NULL" on a column declared NOT NULL.

Change how EXISTS is translated (was "c IS TRUE", now "c IS NOT NULL", where c is a marker column from the null-generating side).

Keep a dumber version of PushFilterPastJoinRule around, to keep some tests working.
[OPTIQ-368] Add SemiJoinRule, planner rule to convert project-join-aggregate into semi-join

Also add JoinRelBase.analyzeCondition() and class JoinInfo, making it easier and cheaper to analyze join conditions.