Merge SSLv23_method and DTLS_ANY_VERSION.

This makes SSLv23_method go through DTLS_ANY_VERSION's version negotiation
logic. This allows us to get rid of duplicate ClientHello logic. For
compatibility, SSL_METHOD is now split into SSL_PROTOCOL_METHOD and a version.
The legacy version-locked methods set min_version and max_version based this
version field to emulate the original semantics.

As a bonus, we can now handle fragmented ClientHello versions now.

Because SSLv23_method is a silly name, deprecate that too and introduce
TLS_method.

Change-Id: I8b3df2b427ae34c44ecf972f466ad64dc3dbb171
diff --git a/ssl/ssl_test.c b/ssl/ssl_test.c
index ee83693..70291a2 100644
--- a/ssl/ssl_test.c
+++ b/ssl/ssl_test.c
@@ -420,12 +420,34 @@
   return ret;
 }
 
+int test_default_version(uint16_t version, const SSL_METHOD *(*method)(void)) {
+  SSL_CTX *ctx;
+  int ret;
+
+  ctx = SSL_CTX_new(method());
+  if (ctx == NULL) {
+    return 0;
+  }
+
+  ret = ctx->min_version == version && ctx->max_version == version;
+  SSL_CTX_free(ctx);
+  return ret;
+}
+
 int main(void) {
   SSL_library_init();
 
   if (!test_cipher_rules() ||
       !test_ssl_session_asn1(kOpenSSLSession) ||
-      !test_ssl_session_asn1(kCustomSession)) {
+      !test_ssl_session_asn1(kCustomSession) ||
+      !test_default_version(0, &TLS_method) ||
+      !test_default_version(SSL3_VERSION, &SSLv3_method) ||
+      !test_default_version(TLS1_VERSION, &TLSv1_method) ||
+      !test_default_version(TLS1_1_VERSION, &TLSv1_1_method) ||
+      !test_default_version(TLS1_2_VERSION, &TLSv1_2_method) ||
+      !test_default_version(0, &DTLS_method) ||
+      !test_default_version(DTLS1_VERSION, &DTLSv1_method) ||
+      !test_default_version(DTLS1_2_VERSION, &DTLSv1_2_method)) {
     return 1;
   }