GroupStep has a complicated BiOperator (its reducer). I believe we can simplify it significantly by considering only two states.
1. A by()-modulation that does NOT have a Barrier.
2. A by()-modulation that DOES have a Barrier.
For the first, simply store a single Traverser. No need to aggregate all traversers as only one will ultimately be emitted.
For the latter, simply store the barrier's BiOperator (NOT the step itself).
In this way, we will no longer have to encode a traversal in the reducer and thus, will remove various potential problems associated with detached traversals.