Removals
   * Remove the TLS 1.0, TLS 1.1 and DTLS 1.0 support by removing the following
     deprecated library constants: MBEDTLS_SSL_PROTO_TLS1,
     MBEDTLS_SSL_PROTO_TLS1_1, MBEDTLS_SSL_CBC_RECORD_SPLITTING,
     MBEDTLS_SSL_CBC_RECORD_SPLITTING_ENABLED,
     MBEDTLS_SSL_CBC_RECORD_SPLITTING_DISABLED, MBEDTLS_SSL_RECORD_CHECKING,
     MBEDTLS_SSL_FALLBACK_SCSV, MBEDTLS_SSL_FALLBACK_SCSV_VALUE,
     MBEDTLS_SSL_IS_FALLBACK, MBEDTLS_SSL_IS_NOT_FALLBACK, and functions:
     mbedtls_ssl_conf_cbc_record_splitting(),
     mbedtls_ssl_get_key_exchange_md_ssl_tls(),
     mbedtls_ssl_check_record(), mbedtls_ssl_conf_fallback(). Fixes #4286.
