Now Worker also treats UserInterrupt as an abortion.
Deleted vestigial code in Supervisor.
Fixed bug in the checkpoint writing code.

Exceptions would delete the checkpoint file rather
than the temporary file.
Now interrupts result in the Supervisor being aborted rather than killed.
Moved processServerMessage out of Process since it isn't so reusable after all.
Split the shared termination event receiver into three separate receivers.
Refactored some of the worker communication functions.