Add openssh_zlib compression type to ssh_transport

http://www.openssh.org/txt/draft-miller-secsh-compression-delayed-00.txt
Add application:ensure_all_started/1-2

This adds two new functions to the application module that will
recursively look for missing dependencies to start the entire dependency
chain of a given application, and then the application itself, if
possible.

Its entire behavior is based on the currently existing 'start/1-2'
functions, which will report dependencies that have not yet been started
and other problems encountered. 'ensure_all_started/1-2' will use this
information the way any programmer would manually do it to automate the
process.

This kind of functionality, while not OTP-ish (releases do this start
sequence for the user), is still useful for testing purposes, quick
demonstrations, and programmers who do not wish or know how to use OTP
releases.

The function returns '{ok, StartedApps}' for all started or already
started applications (already started are omitted from the list), and
will return '{error, {AppName, Reason}}' on a failure to allow users to
rapidly know why the function failed.

Note that no specific check is made for direct or indirect circular
dependencies between applications, and these will make the function go
in an infinite loop.
PER, UPER: Fix encoding/decoding of open types greater than 16K
Merge branch 'bjorn/asn1/fragmented-open-types/OTP-11223' into maint-r15

* bjorn/asn1/fragmented-open-types/OTP-11223:
  PER, UPER: Fix encoding/decoding of open types greater than 16K
Prepare release
Fix compiler crash for 'B and B' guard
Fix a Dets bug concerning traversal of tables

The bug was introduced in R16B.

Thanks to Manuel Durán Aguete.
Merge branch 'bjorn/compiler/beam_bool-crash/OTP-11240' into maint

* bjorn/compiler/beam_bool-crash/OTP-11240:
  Fix compiler crash for 'B and B' guard
ssh: clarified timeout options
Updated primary bootstrap
kernel: fix documentation regarding ensure_all_started endtag
erlc_SUITE: Test the -M* options
Fix a bug in the linter regarding the 'fun M:F/A' construct

If the fun M:F/A construct was used erroneously the linter could
crash.

Thanks to Mikhail Sobolev for reporting the bug.
ssh: added basic connection testcase for openssh zlib
Merge branch 'lpg/openssh_zlib/OTP-11256' into maint

* lpg/openssh_zlib/OTP-11256:
  ssh: added basic connection testcase for openssh zlib
  Add openssh_zlib compression type to ssh_transport
Merge branch 'hb/stdlib/erl_lint_fix/OTP-11256' into maint

* hb/stdlib/erl_lint_fix/OTP-11256:
  Fix a bug in the linter regarding the 'fun M:F/A' construct
Merge branch 'fredrik/ssh/correct_doc_timeout/OTP-11249' into maint

* fredrik/ssh/correct_doc_timeout/OTP-11249:
  ssh: clarified timeout options
Merge branch 'hb/stdlib/dets_bugfix/OTP-11245' into maint

* hb/stdlib/dets_bugfix/OTP-11245:
  Fix a Dets bug concerning traversal of tables
Merge branch 'fh/start-all/OTP-11250' into maint

* fh/start-all/OTP-11250:
  kernel: fix documentation regarding ensure_all_started endtag
  Updated primary bootstrap
  Add application:ensure_all_started/1-2
Merge branch 'maint-r15' into maint

Note that this is a fake merge. The bug fix changes files that
are no longer present in maint, and the bug will need to be fixed
in a different way.

* maint-r15:
  Prepare release
  PER, UPER: Fix encoding/decoding of open types greater than 16K