Streaming rpc

Here it is, the streaming RPC changelist!

I spent a long time cleaning it up into as few independent changelists as possible, and I hope it's readable for you.

Seems a waste to call `makeOutput`, then throw the result away unused with the call to `chunkedYieldingOutput`, even if it is just a lambda.