Draft 14 framer stream

Updates for framer, stream, and connection.

Unfortunately, tests fail between these two commits.
I recommend squash-before-merge (so that git bisect works).

If you find commits are too large, please tell me so.  I'll work harder to make commits smaller.
You are right.  I'll unroll this into an "unless" block.