test_server: Allow init_per_ function to throw skip

Allow all init_per_[suite|group|testcase] to throw (or exit)
{skip, Reason} to explicitly ignore tests without failing.

It is easier to catch it in one place instead of writing a try
in each init_per_* to return {skip, Reason}.
[snmp/agent] Fixed the loop_mib test cases
[snmp/agent] Fixed request id generation

When testing the agent, it is started and then used for a series
(v1, v2, v3, ...) of tests. But the individual test cases are
use one instance of the test manager. Because of this, the requerst
id cannot be a counter starting from 1 or any counter for that
matter. Instead every request id was generated using random.
But this is obiously not a guarantee fo uniqueness, it merely
makes it unlikely that the request ids will be reused.
To get around this problem (without having to rewrite the
entire agent test suite) a simple (global) counter server is
introduced. It is started at the start of the agent test suite
(init_per_suite) and stopped at the end (end_per_suite).
[snmp/manager] Verify success for app start and stop in test cases

When starting and stopping apps verify success. If failure
to start or stop app force failure of test case or init/fin
of test case. Also, be more verbose regarding stop results
during test case finish.
[snmp/agent] CLeanup - unused vars and use of deprecated funcs
[snmp/manager] Add some more error handling when starting

Add some more error handling (a try catch block) when starting
both manager and agent.
inets: Remove potential windows problem
otp_internal: Postpone removals from R17 to OTP 18

Since they have not been removed yet in OTP 17, postpone removal
one release to OTP 18.
Don't 'opaque-decorate' a success typing using an incompatible spec

Without this patch Dialyzer crashes when analyzing the supplemented test case.
sasl: Fix crash in systools_make:format_error/1

The crash occurred when systools:make_script/2 raises the
'duplicate_modules' error. Depending on the 'silent' option,
systools_make:format_error/1 is called to either format and display an
error message, or return a tuple containing the error properties.

When displaying a 'duplicate_modules' error message, format_error/1
receives a list of applications providing the same module(s):
  [
    {{Mod,App1,_}, {Mod,App2,_}},
    ...
  ]

However, before this fix, format_error/1 expected the following
structure, leading to a 'function_clause' exception:
  [
    {{Mod,_,App1,_,_}, {Mod,_,App2,_,_}},
    ...
  ]

The crash never occurred with the 'silent' option, because the error and
its properties are returned as is to the caller.
compiler: Cover #{ [] => Var } in testcase

Coverage removed by literals.
compiler: Remove redundant clause in v3_codegen

Multiple 'nil' cannot happen on instruction level.
Map keys are always unique with literals.
compiler: Test deep map structure
compiler: Remove redudant code in v3_codegen
Correctly handle non-matching patterns against literal values

The pass sys_core_fold did not correctly handle non-matching patterns in code
such as:

    0 = case <<>> of
            <<>> -> 0;
            a -> 1
        end.

Function case_opt_lit/3 is rewritten in two passes to first remove any
non-matching clause and only then potentially remove the related patterns
in each clause.

Reported-by: Ulf Norell
otp_internal: No longer warn for funtions removed in R13B

The grace period is over.
ssl: Handle SNI alert unrecognized_name and gracefully deal with
unexpected alerts.

Add recognitions of RFC 4366 alerts and handle possible
unimplementd alerts in a gracefully way.
ssl: Refactor and start implementing dtls_connection.erl
compiler: map_pair cannot be a type clause in v3_life

Map pairs are encapsulated in a map.
ssl: Improve type specs

Conflicts:

	lib/ssl/src/dtls_record.erl