Obsolete RexImpTable.AggregateImplementor.
Fix https://github.com/julianhyde/optiq/issues/237, "Allow user-defined aggregate functions (UDAs) to be defined in a model".
Fix https://github.com/julianhyde/optiq/issues/228, "Error while compiling generated Java code when using UDF in expression"
Add SqlUnresolvedFunction, to improve how return type of user-defined functions is resolved.

Even though SqlValidator had overload detection and type resolution logic it did not fire since function.getFunctionType() == null was always false.
Convert CombinerParser.jj into freemarker template to allow custom parser implementations.
Improve CompositeList type-safety.
Fix https://github.com/julianhyde/optiq/issues/232, "Sum and avg of empty set should be null as per SQL specification".

We achieve this by replacing 'SUM(x)' by 'CASE COUNT(*) = 0 THEN NULL ELSE SUM0(x) END' if it is possible for the group to be empty (either x is nullable or the aggregate query applies to the whole table), where SUM0 is an aggregate operator similar to SUM but returns 0 if applied to the empty set.
Fix translation of SUM and SUM0 in MongoDB.
Add class ControlFlowException, and make it base class of existing control-flow exception classes.
Use separate variables for "expr != null" conditions. This allows to reuse the result of expr calculation
WIP: if(){} expression calculation