This isn't Java serializable, but XStream serializable
[FIXED JENKINS-22248]

Using unique ID for each run to allow multiple executions to run on the same directory
Allow the script to override the interpreter.

... just like the built-in shell step does.
Use the proper default shell that the user has configured
Echo back the commands and fail on first error, just like the shell build step.
Added a test cas