RegisterAggregator makes a Go type available as a SQLite aggregation function.
Because aggregation is incremental, it's implemented in Go with a type that has 2 methods: func Step(values) accumulates one row of data into the accumulator, and func Done() ret finalizes and returns the aggregate value. "values" and "ret" may be any type supported by RegisterFunc.
RegisterAggregator takes as implementation a constructor function that constructs an instance of the aggregator type each time an aggregation begins. The constructor must return a pointer to a type, or an interface that implements Step() and Done().
The constructor function and the Step/Done methods may optionally return an error in addition to their other return values.
See _example/go_custom_funcs for a detailed example.