dyntrace.erl comment cleanup and unused function removal

Change the module-level docs to give complete step-by-step instructions
for using the `dyntrace:p()` trace function.  Also, remove the unused
`scaff/0` function.
Add 1024 separate USDT probes to dyntrace.erl and dyntrace.c
Remove crufty scaffolding code
DTrace bug in message-send

dtrace doesn't print sender pid and receiver pid in message related
probe correctly, it truncates pid string to 7 characters on 64bit
platform(or 3 characters on 32bit platform).  The dtrace related code
did not set the string length correctly, it sets the string length to
the length of a pointer rather than the buffer length.
Make allocation of check_io tables more scalable.
Revert conceptually wrong little fix as part of check_io opt
erts: Update obsolete HARD_DEBUG code
Optimize inet:tcp_controlling_process

by removing unecessary inet:setops calls.
Fix missing accounting for outbound distribution bytes.
Make the lock check in erts_is_code_ix_locked() stronger

Make sure that the the currently running thread has the lock,
not only that that some thread has the lock.
Add trace_local_SUITE:concurrency/1
Change the data structures for breakpoints

Change the data structures for breakpoints to make it possible
(in a future commit) to manage breakpoints without taking down the
system to single-scheduling mode.

The current "breakpoint wheel" data structure (a circular,
double-linked list of breakpoints) was invented before the
SMP emulator. To support it in the SMP emulator, there is essentially
one breakpoint wheel per scheduler. As more breakpoint types have
been added, the implementation has become messy and hard to understand
and maintain.

Therefore, the time for a rewrite has come. Use one struct to hold
all breakpoint data for a breakpoint in a function. Use a flag field
to indicate what different type of break actions that are enabled.
Refactor the code for managing breakpoints

To allow us to manage breakpoints without going to single-scheduler
mode, we will need to update the breakpoints in several stages with
memory barriers in between each stage. Prepare for that by splitting
up the breakpoint setting and clearing functions into several smaller
functions.
Don't go to single-scheduler mode when managing breakpoints

Calls to erlang:set_trace_pattern/3 will no longer block all
other schedulers.

We will still go to single-scheduler mode when new code is loaded
for a module that is traced, or when loading code when there is a
default trace pattern set. That is not impossible to fix, but that
requires much closer cooperation between tracing BIFs and the loader
BIFs.
Add armv7l and armv5tejl as a recognized ARM architectures
Fix hipe bif calling bug on ARM

Bug introduced in R15.
Fix compile error of HIPE enabled DEBUG emulator for ARM
Workaround gcc bug affecting ARM debug build
hipe_arm.c: remove dead code

erts/emulator/hipe/hipe_arm.c started out as a clone of hipe_ppc.c,
with #ifdefs to select ARM-specific code.  Somehow those #ifdefs
never got cleaned out, resulting in fairly ugly-looking code.

This eliminates the #ifdefs, deletes dead PowerPC-specific code, and
keeps only the ARM-specific code.  I've verified that the exact same
assembly code is generated for hipe_arm.c before and after this patch
(if you compile without -g, with -g there are unavoidable changes to
the debug data).

Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>
Strengthen trace test cases