Optimise io requests for long message queues

Ensure that the monitor reference is present in all receive clauses, so
that the compiler optimisation kicks in and the run time won't depend on
the length of the message queue of the calling process.

Remove the 'EXIT' clause, as its presence breaks the optimisation, and
that case is handled by the 'DOWN' clause anyway.

The test io_SUITE:io_with_huge_message_queue is an adaptation of
gen_server_SUITE:call_with_huge_message_queue.
erl_tar: Extend api to define own storage media access functions.

The reason for this is a requirement on enabling ssh_sftp to write a tar file on the server.
This new api function is used by ssh_sftp:open_tar/3,4.
ssh: Add ssh_sftp:open_tar/3,4 which opens a tar file at the server side of a channel.

Depends on erl_tar.erl having the function erl_tar:init/3 defined.
ssh: update vsn.mk
Merge branch 'hans/ssh/erl_tar_sftp/OTP-12180' into maint

* hans/ssh/erl_tar_sftp/OTP-12180:
  ssh: update vsn.mk
  ssh: Add ssh_sftp:open_tar/3,4 which opens a tar file at the server side of a channel.
  erl_tar: Extend api to define own storage media access functions.
Merge branch 'legoscia/io-message-queue-optimisation' into maint

* legoscia/io-message-queue-optimisation:
  Optimise io requests for long message queues