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/.
lint error: 
```Go
if optStr, ok := opt.(string); ok {
  return optStr, nil
}
return "", fmt.Errorf("Expected 'config' option to be a string")
```