Aggregator: rename to PrimitiveAggregator
Aggregate: port over to JSON-able interface
Aggregator: refactor into AggregatorFactory

Duh, we will need this for SingleGroupByAggregate and MultiGroupByAggregate
SingleGroupByAggregate: move over to factory-based, generic aggregator framework

And fix all the tests and other code.
Aggregate: simplify creation code
MultiGroupByAggregate: port to new AggregatorFactory-based format

And update callers/tests
PrimitiveAggregator: remove bitmask, replace with enum

1) users can now control the order of output fields.
2) catch bugs where incorrect ints were being passed in
MyriaUtils: better error messages from checkHasNoNulls
AppendtableTable: be a TupleTable

We need the generic functions to get numColumns, etc.
add WritableSubColumn to wrap a column of an AppendtableTable
Evaluators: switch from TupleBatch to ReadableTable

That's the real interface they expect.
Aggregators: minor cleanup w.r.t. exceptions

And schema generation
Evaluator: handle state-only expressions
BinaryExpression: fix a weird ordering issue

The test was also backwards. @domoritz am I missing something here?

When we run L < R, we want that to turn into
	left.compareTo(R) < 0. Correct?
The existing code did R.compareTo(L) > 0.
UserDefinedAggregator: initial version
UserDefinedAggregator: add tests

1) Count
2) Count with a constant output as well
3) an 'arg max'-like computation
Test: remove dependence on BATCH_SIZE===10K

Explicitly require 20K tuples for the third test.
UserDefinedAggregator: add serialization and test it
agg: add CountAllAggregator
Aggregator: comment fix