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.
Worth adding that in the comment.. for others reading the code :)