Implement congestion control handshake negotiation
Closes #1817 (closed) (I think). This adds the handshake negotiation to support use of congestion control, but not all of congestion control is implemented yet, such as xon/xoff. We probably want to change this MR before merging to not use the new congestion control handshake negotiation until congestion control is completed.
There is still a bug that appears to cause streams to stall, which I'm debugging.
This is still a draft, and I expect to do some fixups and rebasing still, and might break off some commits into a separate MR. Most of these commits were written by @dgoulet, but I had to make some changes while I was rebasing.
@dgoulet: When it comes time for review, you should review your own commits here to make sure you agrees with the code I rewrote/updated during the rebase since it's authored under your name.
/cc @nickm