Enable MongoDB tests when -Doptiq.test.mongodb=true.

Also fix some test failures.
Fix several tests on Windows.
Fix remaining Windows test exceptions.
Tune SpaceList.populate.
Oops, concurrency.
Fix https://github.com/julianhyde/optiq/issues/157, "Handle SQLFeatureNotSupported when calling setQueryTimeout".
Fix https://github.com/julianhyde/optiq/issues/163, "Equi-join warning".
Move SpaceString and Util.SpaceList classes into new utility class Spaces.
Move test reference logs from src/test/java to src/test/resources; they are compared with files of the same name in target/surefire.
Fix json in comments.
Add unit tests for RexExecutorImpl.
Recognize GROUP BY materializations.

We can roll up (e.g. implement aggregate({y}) in terms of aggregate({x, y}) but not yet match a project on an aggregate.

Add AggregateRel.copy(RelTraitSet, RelNode, BitSet, List<AggregateCall>); derived classes should override this rather than copy(RelTraitSet, List<RelNode>).

Support condition weakening by removing ORs (previously we could just add ANDs). For example if the target is 'filter(r1, p1 or p2 or p3)' and the query is 'filter(r1, p1)' then the result is 'filter(target, not p2 and not p3)'.
Rename UnifyIn to UnifyRuleCall and remove its type parameters; refactor UnifyResult.
Fix https://github.com/julianhyde/optiq/issues/174, "Move hsqldb to test scope".
Use 1 test thread per CPU to avoid thread starvation on dual core CPUs
Test that match against error numbers, dates should set en_US locale, otherwise error messages and date literals do not match
DATE.getLimit should return Calendar in GMT time zone
Allow quoting, quotedCasing, unquotedCasing, and caseSensitive properties be specified explicitly

Fix casing errors, add JDBC test for JAVA lexer
Fix up formatting, and document lexical policies.
Fix https://github.com/julianhyde/optiq/issues/173, "Case-insensitive table names are not supported for Casing.UNCHANGED".