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.

Done, though I'd note that statements 1 and 2 are true for _any_ class that can be mutable or immutable...