DRILL-576: Add costing
- new plans for joins and aggregations, including distributions.
- Utilize GroupScan getSize() for costing
- Add cleanup() methods to MergeJoinBatch and HashJoinBatch.
- Don't match hash aggr rule if number of grouping cols is 0.
- Fix initialization of maxOccupiedIndex in HashAggr and HashTable.
- Fix less-than comparison for cost when row counts are the same.
- Improve fragment identification for better debugging.