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 is getting confusing. the words `Context` `ctx` variable throughout the codebase mean the `context.Context`. I was reading this thinking there was one of them in there. Unless there actually is a `context.Context` it's probably going to create lots of confusion to people. I think we should either:
- rename `Context`, `ctx` to other words
- actually add a `Context` to the request. this would help with #242