Adding pluggablility to work allocation, along with a new work allocation strategy to group small topics within the same task.

The grouping doesn't consider 'partition', only topic.  The latter allocation code puts all the partitions for the topic into the small group, is this granularity accurate?