Add FilterFactory.
[OPTIQ-360] Introduce a rule to infer predicates from equi-join conditions
[OPTIQ-363] Use dependencyManagement and pluginManagement in POM files
[OPTIQ-364] Validator rejects valid "WITH ... ORDER BY" query
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.
Add class Strong, for detecting null-rejecting predicates.
Upgrade maven-checkstyle-plugin.
[OPTIQ-372] Change LoptOptimizeJoinRule & PushFilterPast* rules to use factory
[OPTIQ-371] Implement JOIN whose ON clause contains mixed equi and theta

Add class EnumerableSemiJoin and EnumerableSemiJoinRule.

Add test cases for EXISTS and NOT EXISTS.

Add Enumerables.semiJoin, which will eventually go into linq4j.

Change the constructor of SemiJoinRel to allow it to be sub-classed.
Test case for [OPTIQ-373] NOT IN and NULL values
Inherit maven-release-plugin from Apache POM.
[OPTIQ-343] RelDecorrelator should build its own mappings, not inherit from SqlToRelConverter

Factor out CorrelatorRel.Correlation as a top-level class.

Add SqlExplainLevel.NON_COST_ATTRIBUTES, which includes "id".

Add RelShuttle.visit(CorrelatorRel).
[OPTIQ-377] UnregisteredDriver should catch, log and re-throw NoClassDefFoundError