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.

Well, it turns out to be a lot more work to get right, and since "," does not appear in my test strings, I'm guaranteed not to get any false positives or negatives.