Refactor UDAs for dramatic efficiency boost

UDAs were kinda ridiculously slow because I made some bad choices. In particular:

* `UserDefinedAggregate: improve efficiency by only compiling once …`

    ```
Previously, each aggregator recompiled the expressions into aggregators
to initialize, update, and finalize the aggregate state. Refactor the
code to compute all of these things once and then pass copies (or
references as appropriate) to the children.
```