Add a util/exec interface for testing execs.

Peeled off from ip-per-service
Why do you need to wrap ExitError?