Add a util/exec interface for testing execs.

Peeled off from ip-per-service
Effectively you've got pointer-to-pointer-to thing here, just as a nit I wonder if the below isn't a bit simpler and less indirect.

```
...
+		// Force a compile fail if exitErrorWrapper can't convert to ExitError.
+		var x ExitError = exitErrorWrapper(ee)
+		return out, x

...

+// exitErrorWrapper is an implementation of ExitError in terms of os/exec ExitError.
+// Note: standard exec.ExitError is type *os.ProcessState, which already implements Exited().
+type exitErrorWrapper *osexec.ExitError
+
+// ExitStatus is part of the ExitError interface.
+func (eew exitErrorWrapper) ExitStatus() int {
+	ws, ok := eew.Sys().(syscall.WaitStatus)
+	if !ok {
+		panic("can't call ExitStatus() on a non-WaitStatus exitErrorWrapper")
+	}
+	return ws.ExitStatus()
+}
```