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.

Two things:
1. How do you get from `value["foo"] = 23;` in the code to `{\"foo\":\"bar\"}}` in the result?
2. This function isn't being called. Maybe that's how the discrepancy in (1) was able to remain intact.