refactor escapeShellArg into the System Util, add a test and Fix it
add an executionSystem interface