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.

The `toString` function doesn't appear to be referenced anywhere, but it looks like if it were, it would return ":" for a success status. May as well delete it.