Commands Refactor Part 2

We split #196 in two parts. this is the second. (#262 is the first). This builds on all the changes to commands/.
it should probably also listen for:

```
signal.Notify(sigc, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
```

And, just exiting is bad. We should introduce a ctx here, and cancel it. and wait for graceful shutdown. (actually, it should be a ctxcloser (@maybebtc will flip))