test: sched: superficial refactoring of delay_preempt

Mere refactoring won't do. This test should be redesigned from the ground up:
the test plan's flaw is noted in a FIXME.
test: sched: clean up the suite constructor
test: merge sched:ipc into ipc:timeout
testbench: move next_tick() into util.c

And export it in defs.h .
test: ipc: add preemption parameters to send_preempt

Now it has flags for whether preemption occurs at all (as before), whether the
victim will attempt to delay the inevitable, whether the sensitive priority is
high enough, and whether the delay is long enough for the victim's spin.

Predictably the tests fail when preemption should've been delayed, and
therefore also when the delay should've run out during the lower-priority
spin.