`AggregateStep` can be expressed as `StoreStep.NoOpBarrierStep`. There is no reason to have the extra logic if we don't need it.
Next, we should get rid of aggregate() and have two methods:
If you are storing global that means you are storing every traverser up to the current step. Likewise, store local would only store the current traverser.
Here is the crappy thing. All of our xxx(Scope) steps default to Scope.global: range(), tail(), count()...
We should probably keep the same pattern of Scope.global default, but then that means that we would have a breaking change in the API.
We should have a storeV3d0() backward compatibility which would simply use store(local,"a").