Update `CLI`, add `ConfigFile`

This updates the `CLI` and pulls out the `Config` as a
`ConfigFile`. This is part of making Qs work like Sanford as much
as possible. Most of this logic already existed, it was just
slightly different. The biggest change is the `Config` is now in
it's own file and called `ConfigFile` instead of being buried in
the `CLI` file. This also sets up starting and managing the process
in the same way Sanford does. Qs will have a `Process` and a
`ProcessSignal` which are run depending on the command passed to
the CLI.

Since this is working with existing code, this defines "empty"
tmp files for the `Daemon` and the `Process`. This is to help keep
the commits focused and not have to update the existing `Daemon`
and `Process` yet. As I work through the pieces, I will remove any
tmp files and switch to using the real files and objects.

@kellyredding - Ready for review. This is essentially a copy-paste from Sanford, as there's not really any difference for their `CLI` and `ConfigFile`. I did make sure to line up the CLI's help with asserts:

```
Usage: qs [CONFIG_FILE] [COMMAND]

Commands: run, start, stop, restart
Options: 
        --version
        --help
```