apic: require interrupts to be disabled in ioapic_{read,write}()

Indirect I/O has interrupt hazards, film at 11
testbench: report invalid access faults in forkserv

Oops.
testbench: add pre-exit sync to test & fixture wrappers, sched_suite

This is required so that the join_thread() pre-sync IPC doesn't confuse the
actual test process with unrequited oneway IPC.
testbench: add pre-join handshake to {exit,join}_thread()

This is required for joins from threads other than the original creator.

Also note the comment in defs.h: it's now crucial that exit_thread() happens
in sync with join_thread(), otherwise IPC misdelivery may put the joiner (and
unprepared receiver!) out of sync.
testbench: x86: add X86ExHandler::quit()

This cleans up the last of the join/exit sync problems... that were
revealed so far, anyway.