[SPARK-2253] Aggregator: Disable partial aggregation automatically when reduction factor is low

TODOs

- [ ] Figure out the config option names
- [ ] Decide whether we want to create a new interface or just reuse the existing. If user applications use the existing combineValuesByKey with the assumption the output key will be unique, this could potentially break their applications (however we never really documented what the behavior of this function should be)
- [ ] Implement the same functionality for the external spilling case