Why shouldn't `all-to-memory` merge flows? This is advantageous because the Cascading scheduler can optimize when sources are duplicated.

Removing the "plus" implementation in favor of doing it in this custom way outside of the protocol also seems strange. Logically, merging two flows is an associative addition. By keeping the plus inside the protocol, we make it easy to add new flow representations down the road.