executeOrRun: accept optional argument parameter

This allows commands run via the executeOrRun functions to accept
additional arguments. If a command is passed with arguments, the
initial command should be passed as a string representing an
executable command on its own, as shlex.split() will not be called on
it.

This also allows launchSubProcess() to accept an array as the first
parameter, in which case it will be passed to subprocess.Popen
unmodified.

Refs #5625.