Add test case for https://github.com/julianhyde/optiq/pull/230.
Fix https://github.com/julianhyde/optiq/pull/230, "RemoveSortRule derives trait set from sort, should derive it from sort's child".

There was also a bug in the test case; it was asking for un-sorted output, and it got it!
Fix https://github.com/julianhyde/optiq/issues/229, "Join between different JDBC schemas not implementable".

A JdbcConvention was registered when the first JdbcTableScan was registered, but the other instance of JdbcConvention (for the other data source) was not, because it was not the first instance of class JdbcTableScan. The solution was to add a RelTrait.register(RelOptPlanner) method. It is called for each trait present in the initial RelNode tree.

Test case contributed by Bruno Dumon.

This is a breaking change. Classes that implement RelTrait will need to add a 'register(RelOptPlanner)' method.
Convert CombinerParser into freemarker template to allow custom parser statements
Templates for adding custom literals and types.
1. Reduce the number of ftl files