Fixed andThenM to stop at first ExitFailure. Added test case to demonstrate it.
Break out ExecuteType in preparation for much hacking on Execute
isolate and hide that ShellExec is a StateT

this is in preparation for implementing control flow, where there will be a "locked" state
and in anycase, no code outside of ShellExec should have been relying on it being a StateT
factor out the implementation of the PosixLike instance for IO

The actual instance declaration is still in Posix.hs, so as to avoid an orphan instance.
That may not be the right thing to do, as in this case, the orphan may not be so bad.
decided to move whole instance declaration into Plush.Run.Posix.IO
Merge commit 'e2a2934cccf8fa5c9db8e743cfacaa9db0aae8fb'