More flexibility in handling signal errors in Runner (TRIVIAL)

This change adds a mustSucceed flag to the kill() and signal() functions in Runner, which
allows them to be called unconditionally.  This is especially useful in shutdowns, where we
don't want an exception if we tried to stop it but it was already stopped.  The default
behaviour remains the same: throw an exception.  They will also return whether they
succeded or not.

TRIVIAL because semantics of any existing calls have not changed.