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.

This code is in the category of "tested but unused".  If it weren't called anywhere in the code, I'd say that!