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.

You're checking a different `params` between lines 322 and 330, since line 329 gives you a whole new `params` that needs to be checked again.