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/.

could use the context.Context in commands like this...
``` go
func Function(...) {
  ctx := request.Context()
  node, err := GetNode(ctx)
}
```
where GetNode is implemented something like this...
``` go
func GetNode(ctx context.Context) (core.IpfsNode, error) {
  val := ctx.Value("secretipfsnodekey")
  node, ok := val.(core.IpfsNode)
  // error handling ...
  return node, nil
}
```

And on the other side when setting up the request, outside of the framework, the node is injected something like this...
``` go
node := CreateTheNode()
ctx := context.WithValue(context.Background(), "secretipfsnodekey", node)
request.SetContext(ctx)
```