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 only new logic is there is deciding between the old code (that was there before) and the new code (a single liner calling into RPCHandler).

It is likely that I could bring even more of this logic into the RPC area.  And I will probably want to do so, particularly once I start on the websockets end of things.  But for the moment, I felt this was the clearest way to have code that was comparable and in the same file it originally was.