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/.
If that's the case, couldn't panicking in this scope cause data loss or other problems? For instance...

* the daemon could be in the middle of hashing or unhashing a Block.
* or perhaps blocked on a LevelDB write.

If I mess up and ship a bug that tries to extract a bool from a string option, I'd prefer to not cause data loss.