Added virtual working directory "task.vwd" option to run-command.  Added
"task.cwd" to set the starting directory.  Refactored upload retry logic from
run-command into robust_put.py and modified decompress-all to use it.  no issue #
3505: Adjust order of initialization to reflect potential side effects (e.g. file
creation) on using functions such as $(glob) in the command.
3505: Fixed typo comparison of list against 0 instead of len(list).
3505: Move helper scripts into crunchutil module.  In run-command, added
task.stdin redirection, and renamed save.stdout to task.stdout for consistency.
Stylistic change "x == None" and "x != None" to "x is None" and "x is not
None".
3505: Fix typo in run-command
3505: tinker with logging
Merge branch 'master' into 3505-virtual-work-dir
Merge branch '3505-virtual-work-dir' refs #3505