crypto: Make unloading of crypto safer

Facts:
crypto nif-lib registers callback functions that openssl uses
for memory management and thread synchronization. The callback
functions can only be set once, openssl does not allow changing the
callback functions.

Problem:
If openssl is dynamicly linked to crypto, you might get s scenario
where the crypto lib is unloaded while leaving openssl loaded
with its old pointers to the unloaded crypto code intact.
If crypto is then reloaded (by init:restart() for example), the crypto
nif-lib might get relocated at a different address. crypto calls
openssl which in turn calls the old invalid callback functions...kaboom.

Solution:
Break apart the callback functions into a separate dynamic lib that
crypto loads with dlopen. When crypto is unloaded the callback lib is
left in place to be reused if/when crypto is loaded again.
hipe: Cast offsetof to int in hipe_arch_print_pcb

* Silence compiler warning
* This is the same style as the rest of the debug printing in hipe.
  Keeping to the same style, though changing the printing format
  would probably be better. Not a critical change.
erts: Remove forgotten vxworks includes
erts: Fix '#ifdef' for unused static functions

On architectures where cpu topology was unavailable,
warnings erupted due to unused static functions.

Those warnings are now silenced.
erl_interface: Avoid redefinition of ALIGNBYTES

Changed to EI_ALIGNBYTES
crypto: Enable runtime upgrade of crypto
crypto: Add debug print macros
crypto: Link crypto_callback statically

if static linking of openssl is used.
Add ct_test_support:verify_events/4 which takes a node name
Test that test cases succeed
Remove redundant sleep in ct_master_SUITE
Add support for passing environment variables in master mode

Prototype-by: Magnus Lidén <mange@erlang.org>
Fix race condition in test_server_io

In test_server_io:gc/1 we collect the group leaders for all processes.
We must handle the case that a process has died after processes/0
was called and process_info(P, group_leader) is called.
Teach erts_bs_append not to dump core

When erts_bs_append() calls the garbage collector, it has set
the PB_ACTIVE_WRITER flag in the ProcBin for the binary object
is about to be appended to. Therefore, it is expected that the
garbage collector should neither move nor shrink the binary
object.

But if the garbage collector does a minor collection (thereby
clearing the PB_ACTIVE_WRITER flag in the ProcBin) and there is
still not enough heap space, there will be a second major
garbage collection. During the major collection (since the
the PB_ACTIVE_WRITER flag was cleared), the binary object may
be shrunk or moved (depending on sizes and how many other
writable binaries there are in the process).

Avoid the problem by clearing the PB_ACTIVE_WRITER flags in
a separate pass after the garbage collection(s).

Thanks to Denis Titoruk for helping us find this bug.
ssl: Add test case for ssl:peercert with client certification
Correct doc of process_info(Pid,links)
Remove the obsolete and deprecated 'keyed_list' option

The 'keyed_list' was only supported for the 'ber' and 'ber_bin'
backends and has been undocumented for a long time. Also remove
the note in the documentation about the feature.
Remove tests for the obsolete {TypeName,Value} notation

As a preparation for removing obsolete back-ends, remove tests
for the {TypeName,Value} notation to avoid having those test cases
fail.
Remove support for the obsolete {Typename,Value} tuple notation

Of the back-ends that we are going to keep, only the UPER back-end
support the obsolete {Typename,Value} notation. For consistency
with the PER and BER encodings, remove the support for UPER
encoding too. Also remove vestiges of the support for the
notation in the other back-ends.
Make the specialized decodes work with the 'nif' option