Add `ProcessSignal` and `PIDFile`

This fills out the `ProcessSignal` class and adds a `PIDFile`
class. The `ProcessSignal` is used to manage a running Qs process.
It uses the configured pid file path to read the pid of the running
process and sends a signal to it. This is used by the `CLI` to
stop or restart a Qs process. The `PIDFile` is an internal tool
that handles reading, writing and removing pid files for the
`Process` and `ProcessSignal`. In a separate commit, I will update
the `Process` to use this `PIDFile` as well.