Make reduceRemove optional.

This forces the entire group to be recomputed from scratch if records
are removed from the group (due to filtering), which is useful for some
calculations such as tracking the maximum or minimum per group key.

It could probably be a little more efficient by only resetting the
individual group keys that have records removed.

Another consideration is use the number of arguments to detect lack of
reduceRemove:

    group.reduce(add, initial);