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/.
> the flags library actually does not do that, and the caller is able to trust that the library handled the value correctly

The flags library is meant to error out immediately in only a cli. When some of these things are running in long-lived daemons exposed to all sorts of inputs...

> make the daemon catch panics that happen in the command execution with recover() and treat them as errors.

This is a good idea for lots of things -- though has pernicious edge cases. sometimes you _do_ want the thing to crash. (i.e. if it's brain damaged better to crash and reboot). I'd htink rather than catching everything, we should be whitelisting (handling explicitly) errors that can survive a panic.