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.

Nitpick: I see how joining the strings together simplifies the validation comparison, but I'd think that looping over the parallel vectors, and comparing each item individually would be a more robust test.