Initial commit of the new aggregation module

see #3300
Fix package declarations.
- added a bunch of nocommit comments
- fixed a bug in Rounding.Streams
Add nocommit: range aggregators should use binary search.
Beef up tests and add nocommits
fixed a bug in the nested aggregator, where the aggregations where build multiple times
fixed a bug in the nested aggregator, where if the nested aggregator was added as sub aggregator, it could potentially miss the first segment reader (specifically where the top aggregator bucket is dynamically created during aggregation (as in terms & histogram aggs).
- fixed type in aggregations sub-package name (ip4v to ipv4)
- changed numeric script data source to eagerly create the different values constructs
refactored out the ValueSpace construct
rebased to master - integrated with the latest fielddata changes
Remove single/multi-valued specialization.

The plan is to consume all *Values through setDocument/next[Ord/Value] instead
of hasValue/getValue.
Don't protect against double run based on the docId since the same script is used across segments.
Don't share values sources across levels of the aggregators tree.
Fix some ValueSpace expectations.
Fix NPE and a BytesRef ownership issue.
Fix ValueSpace expectations.
fixed DateHistogramTests
More test fixes
More test fixes.
Fix calc tests.