SI-6488 Interrupt i/o threads on process destroy

The previous fix uses Thread.destroy, 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.