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.

Gosh, it's funny that people are asking all these questions that I worried over.

The answer is that this doesn't compile.  The reason was obscure and I spent a little time with Howard over it, a couple of weeks ago, but it has to do with the lack of copy constructor for RPC::Coroutine - even though the copy constructor is never called.

I'm going to try it again, though - I've simplified the object model since then.  If I can get it to work, I will.