Conveniently run shell commands in Haskell (extracted from the Shake build system)