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.

@JoelKatz @rec This behavior needs to be javadocced in the declaration of `visitLeaves` so that readers are aware. @rec Can you please do it?