Fixes a race by creating the pipe in the ipc_reader_t constructor.
Detects pipe creation errors before launching the child by augmenting the pipe, reader, and analyzer classes with more diagnostic functionality. Provides a more useful error message on pipe creation failure. Closes the pipe when aborting.
Adds control-C handling to the launcher on UNIX which destroys the pipe to avoid leaving a stale fifo behind.
Fixes #2045 (closed) Fixes #2486 (closed) Fixes #2487 (closed)