Minor correction of xml structure to conform to the DTD
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.
Lift 'after' blocks to zeroary functions

If 'after' blocks are not lifted, the ids of functions in their bodies
must be killed and it can make stacktraces more confusing than they
should. We lift them to zeroary functions to avoid unnecessary killings
and duplication of code.
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.
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
Cross compilation is now a supported feature
Corrections so that the documentation confirms to the DTD
Fix EV_* macros and functions signedness flaws
Remove object files when cleaning

Otherwise something like this will fail:
./otp_build setup --enable-m32-build
make clean
./otp_build setup --enable-m64-build
Fix some compiler warnings
Fix broken cpu_sup:nprocs and others on Solaris 64-bit

The correct kstat datatype for nproc & avenrun_* is ui32, not
ulong. Under 64-bit OTP builds garbage was returned because the wrong
datatype was used.

This patch correcs the datatype. It also adds an additional check
in the test case for a slightly less insane return value.
[snmp/agent] Improved loading and unload of MIBs

Improved the documentation of the loading and unloading
of MIBs (plural). also added functions for loading and
unloading a single mib.

OTP-11216
[snmp/agent] Fixed doc broken link to gen_server
erts: Document erl_driver interface lock names
Cleanup of the file

Consisting of three items:
 - Eliminate uses of is_subtype/2 in specs
 - Change module-local void functions to return 'ok' instead of []
 - Make sure there are no dialyzer warnings with --Wunmatched_returns
Ignore odbc cores
Fix broken spawn_opt

The option was morphed into a boolean() and then ignored.