Offheap incremental index

* IncrementalIndex now uses offheap to store aggregates
* GroupBy queries use processing buffer to store intermediate results 
Ok, 500MB seems about right for HLL. We should compute the required size ahead of time and fail earlier in the indexing process if we cannot allocated the requested size. Currently it runs the determine partitions job before checking the amount of memory it needs. Given that we make no distinction between hadoop nodes, is there a way we could check the max direct memory setting as part of the first job and fail if it's not se large enough?