refactor aggregates in preparation for UDAs

The current aggregators assume only that you are aggregating over a single column with a single basic type. Refactor these into a more generic type hierarchy, update the corresponding code and APIs.

MUST BE MERGED SYNCHRONOUSLY WITH uwescience/raco# , which includes the corresponding API changes.