ShellScriptTask now considers return code for failure

Instead of just detecting whether or not there was an error in the
STDERR of the subprocess, it now also looks at the return code. This
will properly fail the task for `exit 3`