We were leaking the temporary directory that we create in TarFilter,
because the "tmpDir, err := ioutil.TempDir()" call overrides the
tmpDir in the outer scope with a new locally scoped variable.
This means tmpDir is always "" when the cleanup function is called.
Also, we did not call the atExit() function if CmdStream had an
error early on.
On errors in CmdStream(),
Upstream-commit: 0aee096fd73676e2548e3bf132770f1692ac47dd
Component: engine