erts: Fix is_map/1 spec
erts: Document map guard functions

* erlang:is_map/1
* erlang:map_size/1
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.)
Ensure generated modules are properly included in the Emakefile
Add support for testing the LLVM backend too
Use fun encoding to erl_parse:abstract/2

This is an encoding that didn't exist at the time of the previous
commit, but which was added in commit 83b6daef. Use it to restrict
stringification to lists containing printable ascii.
erts: Reduce runtime of test port_SUITE:close_deaf_port

as it fails with timeout sometimes.
inets: Avoid Windows XP port problems
inets: Avoid timing issus in test case code
doc: Document Maps datatype in reference manual
erts: Fix bug of scheduling a suspended process

This is a race that can cause RUNNING (instead of RUNNING_SYS)
set on a SUSPENDED process. The effect of this race happening is probably
quite benign.

The bug was discovered by process_SUITE:processes_gc_trap on debug VM
crashing on last assert in schedule():

/* Never run a suspended process */
ASSERT(!(ERTS_PSFLG_SUSPENDED & erts_smp_atomic32_read_nob(&p->state)));
erts: Fix bug in test case port_SUITE:otp_5119
Document the asn1_OPENTYPE wrapper
Fix an ampersand
Shorten the Introduction section, keeping only the essential details

We can assume that anyone that reads the documentation for the Asn1
documentation already knows about ASN.1, so we don't need three
paragraphs of introductory. Keep one short paragraph explaining
what ASN.1 is in case a reader unfamiliar with ASN.1 stumbles upon
the manual.

While we are at it, reformat the paragraphs in Introduction to
shorter lines that don't wrap.
Correct and modernize the "A First Example" section

Replace "IMPLICIT TAGS" with "AUTOMATIC TAGS" since AUTOMATIC TAGS
is recommended for all new ASN.1 specifications.
Remove all uses of the deprecated asn1{ct,rt}:{en,de}code/2 functions
Correct the PrimStrings example

The decode functions now return a binary, not an iolist, so we must
both change the output and remove the call to list_to_binary when
decoding.