SI-6488 Interrupt i/o threads on process destroy

The previous fix uses Thread.stop to stop the threads which
drain outputs, but should do something orderly.

This commit interrupts the threads, which must check isInterrupted
before attempting further i/o.

Similarly, i/o handlers must preserve and communicate interrupted
status; see the test.