Add systemd socket activation for epmd.

Check for systemd libraries and headers in confgiure.
Add -systemd option enabling waiting for sockets from systemd.
Fix typo in common_test documentation for the -join_specs flag
Add ETHR_FORCE_INLINE define to hide compiler specific directives

Some win32 specific code does not compile with gcc (mingw-w64) since
'__forceinline' is not supported by gcc. This can be avoided by
defining a new macro ETHR_FORCE_INLINE similar to ETHR_INLINE.
Remove a superfluous echo in the emulator Makefile

It pollutes the output of silent rules.
Replace local mapl/2 (Erlang < 5.0) unique call by a LC
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}.
Pass full strings to DTrace probes

Whenever string is passed as an argument to a DTrace probe, its length
should be properly computed. Until now in order to get length of the
input buffer size_of(char *) was used - which evalutes to 4 or 8
(depending on the architecture). To get a proper length,
size_of(DTRACE_CHARBUF_NAME(buffer_name)) should be used.
[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).
erts: Fix is_map/1 spec
erts: Document map guard functions

* erlang:is_map/1
* erlang:map_size/1
[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
Remove RTL code that handled the (is_)constant guard

The (is_)constant/1 guard is removed from Erlang long ago and thus
there is no need to handle it in RTL.

While editing these files, also performed some minor cleanup.
Shorten default timetrap timeout for ct_master test suite
wx: Fix configure for win64 with wxWidgets-3.0
wx: Fix listCtrl sort callback
Fix pick_peer case clause failure

In the case of {call_mutates_state, true} configuration on the service
in question, any peer selection that failed to select a peer resulted in
a case clause failure in diameter_service:pick_peer/5, when the call to
the service process returned false. This was noticed in the case of a
peer failover in which an alternate peer wasn't available.

The explicit matching is intentional, to match exactly what's expected.
Fix unicode path failure in diameter_make:codec/2

A dictionary path containing a unicode codepoint > 255 caused the
function to fail when iolist_to_binary/1 was applied to the path.
Adapt dictionary compilation to new default encoding

The problem is that the change in default encoding to utf8 in 17.0, in
commit 00e42967, changes the behaviour of erl_parse:abstract/1, which is
used by the dictionary compiler to turn terms into abstract code. In
particular, it transforms the orddict representation of a parsed
dictionary to contruct the return value of a dictionary module's dict/0
function. This orddict contains various lists, one of which is a list of
tuples of the form

  {Name, Code, [VendorId], [Avp]}

where Name is an ASCII string and VendorId is a non-negative integer.

Using erl_parse:abstract/2 instead allows a string encoding to be
specified but regardless of what encoding is used, the result of
transforming our tuple might not be what we really want, which is for
Name to always be represented as a string form and [VendorId] to always
be represented as a cons form: the [VendorId] will always end up as a
string form if the integers are small enough. The only way around this
is to transform the tuple bit by bit, but modifying the code to do this
is quite a lot of work, for not much gain: it would be nice to produce
more readable output but nothing stops working without it.

This commit restores the pre-17.0 conversion by explicilty specifying
latin1 as the string encoding to erl_parse:abstract/2. The utf8 encoding
broke the compilation of some dictionares since unicode strings aren't
expected when writing the generated code to file.

Note that the latin1 encoding does reasonably well in practice, although
it mangles the Ericsson Vendor Id list [193] into a "LATIN CAPITAL
LETTER A WITH ACUTE". The utf8 encoding does worse, mangling the 3GPP
Vendor Id 10415 into "DESERET CAPITAL LETTER CHEE". An ascii encoding
would do better than latin1 but doesn't yet exist. (Encoding isn't
really what the option is. It's a string predicate: if the predicate is
true then represent as a string form, otherwise a cons form.)