Original text:
Pre-Shared Key ("pre_shared_key"; pre-shared-key-extension) <del> Server Name Indication ("server_name"; Section 3 of RFC6066) </del> Cookie ("cookie"; cookie)  All implementations MUST send and use these extensions when offering <del> applicable cipher suites: </del>  "supported_versions" is REQUIRED for all ClientHello messages. <del> "signature_algorithms" is REQUIRED for certificate authenticated cipher suites. </del>  "supported_groups" and "key_share" are REQUIRED for DHE or ECDHE <del> cipher suites. </del>  <del> "pre_shared_key" is REQUIRED for PSK cipher suites. </del>  <del> "cookie" is REQUIRED for all cipher suites. </del>  <del> When negotiating use of applicable cipher suites, endpoints MUST abort the handshake with a "missing_extension" alert if the required extension was not provided.  Any endpoint that receives an invalid combination of cipher suites and extensions MAY abort the connection with a "missing_extension" alert, regardless of negotiated parameters. </del>  Additionally, all implementations MUST support use of the "server_name" extension with applications capable of using it.

Reviewer comments:
The MTI Extensions section is currently out-of-date. It wasn't updated with the new negotiation and still refers to the old cipher suites system. This PR cleans that up. I also drop the cookie extension universal send requirement, as that was in there as an alternative to allowing a server to send a cookie without first being prompted. We have that in as an explicit exception, currently.
I already did some of this in PR, so I'm going to hold this PR until that has landed and then we can take stock
Sure, I hadn't read that PR yet. A notable difference in the language here is that I'm replacing the "MAY abort the connection" line with specific requirements, as that high level of generalization is counterproductive now that cipher suites and feature extensions are decoupled.

Revised text:
Pre-Shared Key ("pre_shared_key"; pre-shared-key-extension)  Cookie ("cookie"; cookie) <ins> Server Name Indication ("server_name"; Section 3 of RFC6066) </ins> All implementations MUST send and use these extensions when offering  <ins> applicable features: </ins> "supported_versions" is REQUIRED for all ClientHello messages.  <ins> "signature_algorithms" is REQUIRED for certificate authentication. </ins> "supported_groups" and "key_share" are REQUIRED for DHE or ECDHE  <ins> key exchange. </ins>  <ins> "pre_shared_key" is REQUIRED for PSK key agreement. </ins>  <ins> A client is considered to be attempting to negotiate using this specification if the ClientHello contains a "supported_versions" extension, at minimum.  Such ClientHello messages MUST meet following requirements: </ins>  <ins> If not containing a "pre_shared_key" extension, it MUST contain both a "signature_algorithms" extension and a "supported_groups" extension. If containing a "supported_groups" extension, it MUST also contain a "key_share" extension, and vice versa. (an empty KeyShare.client_shares vector is permitted) Servers receiving a ClientHello which is attempting to negotiate using this specification, yet failing any of the above requirements, MUST abort the handshake with a "missing_extension" alert. </ins> Additionally, all implementations MUST support use of the "server_name" extension with applications capable of using it.