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.

It isn't really a property of `visitLeaves`, though, is it?  It's because the ledger I'm using is immutable!