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

This one was intentional.  I didn't want the list to get modified after a GroupRequest object was instantiated.  Exposing just the iterator provided a mechanism for exposing the contents of the list, without exposing the list.