Avoid race in do_release_ts()

The list is concurrently being modified by the waking processes.  This
requires the use of the list_for_each_safe() iterator.

Reported by Glenn Elliott.
Reimplement plugin switching using stop_machine()

stop_machine() does exactly what we want (avoid all concurrent
scheduling activity) and much simpler than rolling our own (buggy)
implementation.
TRACE_TASK(): accept NULL pointers

Allow tracing of NULL tasks. Makes debugging a bit easier.
FDSO: fail to build if some ops are missing

Prevents out-of-bounds lookups.
P-FP: fix BUG_ON releated to priority inheritance

In some cases, the PCP priority inheritance code triggered a
(defensive) BUG_ON() in fp_common.c. This shuffles the order of
operations a bit to be compliant with the restriction that tasks are
never compared against themselves.