Fix typo in ET doc
ssl: Avoid supervior bottleneck

This is done by using proc_lib and gen_fsm:enter_loop
so that supervisor will not have to wait for the relative long initialization
of an ssl connection process before starting another connection process.
ssl: Reuse session check optimization
ssl: Move and avoid ets:select bottleneck in client

Do not use ssl_manager process for selecting an id. It's unnecessary
to involve the manager process at all on the client side.
ssl: Use ordered_set in cache

So we can use partial bound keys for matching
ssl: Renegotiate updates session id in gen_fsm state

The session id keept in the connection processes state must be updated to be
the id selected by ssl_handshake:client_hello, failing to do so will
cause a crash if the session is not reused.
ssl: Move ets:select bottleneck in server

Only use ssl_manager for selecting new ids to guarantee uniqueness,
but reuse check does not need to be performed by the manager.
ssl: Use md5 as file ref id instead of filenames

Aviods storing a lot of data
ssl: Refactored for readability

Instance of state variable that are "updated" in a function is called
for example State0 and the last instance, that should be returned, is
called State possible intermidiat versions are suffixed by increasing
numbers.  State0 may be rturned in error cases.

Avoid nesting case statments.
ssl: Simpler PEM cache
ssl: File handling optimization

Avoid cach validation with file:file_info/2 as this i too expensive and
causes a bottleneck in the file server. Instead we expose a new API function
ssl:clear_pem_cache/0 to deal with the problem. As we think it will be
of occasional use and the normal case is that the cache will be valid we think
it is the right thing to do.

Convert file paths to binary representation in the ssl API module to
avoid uncessarry calls in file later on.

Also add sanity checks for openssl versions in testsuite due to new
openssl bugs.
ssl: Avoid second bottleneck in supervisor

Do proc_lib:spawn_link instead of proc_lib:start_link as synchronized
init is not used/needed anyway.
ssl: Test case fixes
Fix nonsense of eprof doc
Fix indentation of record fields in Emacs

In some situations, the indentation of record fields in Emacs was
strange. This example below shows how Emacs previously would indent
two similar pieces of code very differently:

    some_function_with_a_very_long_name() ->
        #'a-long-record-name-like-it-sometimes-is-with-asn.1-records'{
                                         field1=a,
                                         field2=b}.

    x() ->
        #some_record_name{
       field1=a,
       field2=b}.

This changes the indentation to be like below for both cases:

    some_function() ->
        #some_record{
           field1=a,
           field2=b}.
Merge branch 'ia/ssl/bottlenecks/OTP-10113' into maint

* ia/ssl/bottlenecks/OTP-10113:
  ssl: Test case fixes
  ssl: Avoid second bottleneck in supervisor
  ssl: File handling optimization
  ssl: Simpler PEM cache
  ssl: Refactored for readability
  ssl: Use md5 as file ref id instead of filenames
  ssl: Move ets:select bottleneck in server
  ssl: Renegotiate updates session id in gen_fsm state
  ssl: Use ordered_set in cache
  ssl: Move and avoid ets:select bottleneck in client
  ssl: Reuse session check optimization
  ssl: Avoid supervior bottleneck
ssl: Fix bug in the handling of remote connection closure of {active,false} ssl sockets.
Fix faulty use of thread progress in handle_aux_work()

As an optimization old thread progress data was kept and used in
handle_aux_work() in erl_process.c. This could cause memory to be
deallocated at a later time than intended, which is quite harmless.
This has, however, now been fixed.
ssl: Fix pem cache bug

A general case clause was put before a less general so that the less
general case would never match.
Merge branch 'ia/ssl/pem-cache-bug' into maint

* ia/ssl/pem-cache-bug:
  ssl: Fix pem cache bug