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.

Did you inline the old `doRpcCommand` here (352-388)? `processRequest` is huge already. Do we really want to make it longer?