This allows us to rely on gentler termination semantics (os.Interrupt)
for UNIX-y systems, as such interrupts do not work on Windows.
Terminations are triggered by e.g. ctrl-C interrupts. Relying generally
on Process.Kill() for such purposes was causing git to often exit in
unclean ways, resulting in a dirty cache dir and putting users in an
awkward position.
We maintain the invariant that we ensure the process IS either exited,
or forcibly Process.Kill()ed, before exiting monitoredCmd.run(). This
allows us to ensure we do not have orphan subprocesses that exist beyond
the lifetime of the parent sourceMgr.