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/.
had thought we were going to change the api to `func(req cmds.Request) (interface{}, error)`? what's best?