ssl: Avoid creating a huge session table
ssl: Select supported cipher suites for the negotiated SSL/TLS-version

When selecting the available cipher suites for the server all cipher suites
for the highest supported SSL/TLS-version would be selected, and not
all supported for the negotiated SSL/TLS-version. This could lead
to that faulty clients could negotiate cipher suites that they
can not support. This change will enable the faulty client to negotiate
another cipher suite that it can support.
ssl: Graceful handling of warning alerts

Generalize last warning alert function clause
ssl: recv shall ruturn {error, einval} on active socket
ssl: Correct decryption error handling
Merge branch 'ia/ssl/suites-match-negotiated-version/OTP-11875' into maint

* ia/ssl/suites-match-negotiated-version/OTP-11875:
  ssl: Select supported cipher suites for the negotiated SSL/TLS-version
Merge branch 'ia/ssl/recv/OTP-11878' into maint

* ia/ssl/recv/OTP-11878:
  ssl: recv shall ruturn {error, einval} on active socket
Merge branch 'ia/ssl/decrypt-alert/OTP-11880' into maint

* ia/ssl/decrypt-alert/OTP-11880:
  ssl: Correct decryption error handling
ssl: TLSv1.2: proper default sign algo for RSA
ssl: always pass negotiated version when selecting hashsign

Negotiated version is now always passed to ssl_handshake:select_hashsign
because ssl_handshake:select_cert_hashsign has different rsa defaults on
tlsv1.2 and older versions.
ssl: Refactor so that there is only one source for the default hashsign values

Also fix DTLS call to supply its corresponding TLS version
ssl: Fix crash on garbage during handshake

If a client sends some garbage in ssl record instead of
valid fragment, server crashes with function_clause while
receiving next record from client.
This patch makes server raise handshake failure instead of
crashing and exposing internal state to user code.
ssl: Remove outdated documentation
ssl: Fixes ssl_crl_SUITE errors on mixed ipv6-v4 interfaces
ssl: Add checks to avoid processing of illegal alerts
ssl: SSL/TLS version input list shall not be order dependent
ssl: Handle socket option inheritance when pooling of accept sockets is used

Implement a listen socket tracker process that holds the emulated socket
options so that it is possible to implement a destructive ssl:setopts
on SSL/TLS listen sockets without changing the options of the internal
socket as we want that socket to have the internal socket option values.
Merge branch 'ia/ssl/false-alerts/OTP-11890' into maint

* ia/ssl/false-alerts/OTP-11890:
  ssl: Add checks to avoid processing of illegal alerts
ssl: fix max sequence number so it does not overflow

The old value of 18446744073709552000 was calculated using math:pow
which returns float therefore isn't precise. And it would overflow:

erlang:integer_to_list(18446744073709552000, 16) = "10000000000000180"

This patch changes MAX_SEQENCE_NUMBER to value calculated with bitwise
shift:
(1 bsl 64) - 1 = 18446744073709551615
Merge branch 'ia/ssl/inherit/OTP-11897' into maint

* ia/ssl/inherit/OTP-11897:
  ssl: Handle socket option inheritance when pooling of accept sockets is used