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.
This method expects only one frame as input.
When encoding HEAD or PUSH_PROMISE, there might be CONTINUATIONs when the compressed header block is too large.