Add `dir` argument to setenv

Allows setting the directory in which the child process is supposed to execute.
Also changes the printing for `Cmd`s to distinguish those with modified env or
dir fields. This was long overdue.