Add DynamoBI join-optimizer rules. (Headers and packages have not been changed.)
Change headers, fix formatting and other minor cleanup. Add method IntPair.zip.
Add ImmutableNullableList and UnmodifiableArrayList, and remove calls to Arrays.asList.
Enable MultiJoinRel and some other planner rule tests.

Add Tester.withCatalogReaderInit, to allow a test to have its own schema.
[OPTIQ-301] Add `Program` interface, a planner phase more general than current `RuleSet`.
[OPTIQ-302] Use heuristic rule to plan queries with large numbers of joins.