Better `--fork` implementation.

The parent process and shutdown logic using `multiprocessing` made no sense,
as `multiprocessing`'s interface is really designed around short-lived tasks,
not around tasks that consume a process' whole existence. Replaced it with
some unix, instead; this means `--fork` now only works on POSIX-ish OSes.

2.0 or bust, this breaks `--fork` on Windows.
Only import pysigmask if we're going to use it.

Pysigmask uses ctypes to load `libc` and look for `sigprocmask` and friends
on import, which causes the import to fail on Windows. Non-forking sparkplug
is supposed to run on Windows, so that shouldn't interfere with Sparkplug's
startup.
Use socketpair to detect parent death.

Parent death can now be detected immediately, rather than waiting for the
next message to be processed. This is also used during orderly shutdown.