Implement emulator netns support for TCP and UDP
Implement netns option for TCP and UDP
Implement netns for SCTP + bugfixes
Make netns option value a string
Rudimentary test
Document socket option 'netns'
erts: Extend erl_driver interface with lock names

Lock and thread names are already a feature in the driver interface.
This extension will let developers read these names. Eases debugging.
erts: Speed up valgrind with asynch threads

by only letting it run on one core. Valgrind only let one thread
at a time execute anyway.
asn1ct_imm: Break out the rule for string alignment

Break out the the rules for determining whether a string should
be in aligned so that it can be reused for encoding.
Encode SEQUENCE OF / SET OF using a list comprehension

Using a list comprehension will simplify both the code generator
and the generated code. Also, if there is an ObjFun argument in
the host function, the BEAM compiler will make sure it is only
passed to the generated list comprehension function if it is
actually used.
erts: Fix segfault when scheduling release_port later_op

begin_port_cleanup can be called from a non-scheduler thread, this
means that there is no esdp available and thus erts_schedule_thr_prgr_later_op
segfaults.
Fix error in builtin hook calling non-existing function

OTP-11238
Fix variable usage tracking in erl_lint

When analyzing complex expressions (i.e. comprehensions, cases, tries,
ifs and receives), erl_lint does not forget about old unused variables
when returning the updated variable table. This causes a bug where old
unused variables are not recorded as such:

t(X, Y) ->
  #r{a=[ K || K <- Y ],b=[ K || K <- Y ]}.

As erl_lint uses vtmerge_pat/2 to merge the results of the analysis of
the two list comprehensions, X is marked as used and the warning is not
emitted.

The function vtmerge_pat/2 is used instead of the similar vtmerge/2
which does not mark multiple occurrences of a variable as usage to
handle cases like the following one:

t(X, Y) ->
  #r{a=A=X,b=A=Y}.

Other simpler expressions like conses, tuples and external fun
references do not correctly follow this behaviour, e.g. A is not marked
as used in the following code:

t(X, Y) ->
  {A=X,A=Y}.

This commit fixes both issues and makes erl_lint not return old unused
variables in updated tables and makes all compound expressions use
vtmerge_pat/2.

Reported-by: Anders Ramsell
Fix unsafe variable tracking in try expressions

Variables used in the body of a try expression were marked as unsafe
*and* used, which makes no sense as an unsafe variable can't be used.

Function vtsubtract/2 is used to forget usage of such unsafe variables.

Reported-by: Paul Davis
Fix variable usage tracking in some record errors

When reporting a field redefinition in a record, erl_lint can forget
about some old unused variables.

f() -> X = 1, #r{a=foo,a=bar,a=qux}.
Updated primary bootstrap
Remove code for handling an object/object set reference in SEQUENCE

An field in a class that references an object or object set is not
allowed to be referenced directly from within a SEQUENCE.
asn1ct_constructed_per: Simplify gen_enc_line() and friends

The first clause of gen_enc_line() allows us to pass in [] as
the value for Element; if we modify the only caller that passes
[] to pass an actual expression we can remove the first clause.
Furthermore, since the Pos argument was only used by the first
clause, we can remove the Pos argument.

We can also remove the first clause in gen_enc_component_optional(),
since the code in its body is exactly the same as in the following
clause.
Tag sasl and error reports with suite, group, and function in log
Remove the obsolete test_server_h error handler