stream: add reduce
This continues the work in https://github.com/nodejs/node/pull/41630 so that one has to land before this one and only look at the last commit :) (same as last time, I want feedback :))
I have a few questions here about what the behaviour should be and I think my implementation may be simplified (I changed it as I added tests).