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 rules are:

1) If you are the sole owner of a mutable ledger, you can do whatever you want with no need for locks.

2) If you have an immutable ledger, you cannot ever change it, so no need for locks.

3) Mutable ledgers cannot be shared.