RelBuilder.aggregate should prune unused fields from the input, if the input is a Project.
Pruning fields during the planning process is desirable, but often cannot do it - we are applying a RelOptRule that has to return the same fields, or we don't want to add an extra Project do so the pruning. But when we are in RelBuilder.aggregate and the input is a Project, neither of those limitations apply. We already have a Project, we are just making it narrower; and we know what fields the Aggregate will produce.
If there are no fields used, remove the Project. (A RelNode with no fields is not allowed.)
Add an option RelBuilder.Config.pruneInputOfAggregate, default true, so that people can disable this rewrite if it causes problems.