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/.
this pattern is verbose and easy to forget and screw up. how about one of:

```Go
dspath, err := req.Option("d").StringVal() // because .String() expected to be something else.
dspath, err := req.OptionString("d") // or this
dspath, err := req.Options.String("d") // or even this
if err != nil {
```