Implement HelloRetryRequest
When the client doesn't send a key share from a supported group, the server should send a HelloRetryRequest message. If the client hasn't generated key shares for all supported groups, it should generate one and retry the ClientHello.
Fixed by #109
Well, maybe not. That patch doesn't cover the case where the server gets an incomplete DH offer.
Related to this, groups we don't know about in the ClientHello key_shares should be skipped over. Currently they cause a handshake failure, because share.SizeValid() for those shares is false. This is going to become a problem with the GREASE RFC being adopted for TLS 1.3, which will intentionally inject invalid group IDs into key_shares (and other extension fields).
https://www.ietf.org/mail-archive/web/tls/current/msg22319.html