3719: Raise more specific SubstitutionError instead of generic exception on
user syntax errors.  Don't print stack trace on SubstitutionError.
3719: run-command uses its own logger instead of the default Python logger to
avoid cross talk with badly behaved modules.
3719: Robust-put uses run-command logger.
3719: Python style/wording fixes.
Merge branch '3719-improve-subst-error-reporting' closes #3719