Execution performance improvements

Change blocks and TupleInfo to only contain a single field value
Move looping into aggregation implementations
Use ClassLoader magic to share base classes of aggregations without creating megamorphic call sites
Change aggregation to support multi-channel grouping
Change orderBy, topN, and window to support multi-channel sorting
Change join to support multi-channel keys
Pipeline schedule splits in batches instead of one at a time