+str: Implement efficient stream op DSL

Explanation in the doc comment for Interpreter
This somehow does not add up for me: this flag is only true if this very stage recently issued a `pull`, which means that it wants to get some data. There are no data since we are completing, so the stage needs to be informed that no more data will be forthcoming. Why does it make sense to invoke its `onPull` then? It might be that things magically work out, but at least the naming of the flag and/or actions is misleading.