Tuple: implement Cloneable

Deep copy of a Tuple
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.
Merge branch 'master' into uda-efficiency
Merge pull request #610 from uwescience/uda-efficiency

Refactor UDAs for dramatic efficiency boost