Improved handling of multiple closes

exit:{normal} -> exit:{normal, _} this typo could sometimes cause a crash
when trying to close a channel that was already closed.
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.
Add kernel/test/code_SUITE:upgrade

For now we only test beam as hipe doesn't pass the test
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}.
Remove the deprecated inviso application
Merge branch 'ia/ssh/missing-reason-in-catch-exit/OTP-10112' into maint

* ia/ssh/missing-reason-in-catch-exit/OTP-10112:
  Improved handling of multiple closes
Merge branch 'maint'

* maint:
  Improved handling of multiple closes