Fail if system calls are non-zero

Previously, if a system call such as 'tar xf ...' failed, the
buildpack continued on as if everything had gone fine.  This was due
to the use of the 'system' call without ever checking that the return
value was 'true'.  This change creates a 'shell' call that works
similarly to the system call except that it checks the exit code of
every call and prints stdout and stderr and then fails if the exit
code is non-zero.

[#58149490]
Merge 58149490-fail-non-zero to master

[Completes #58149490]