Make find_and_modify die on error

run_command returns a string for errors.  This commit detects it
and rethrows.  Otherwise find_and_modify dies trying to treat
the string as a hash reference and the original error is lost.

A better fix (with broader implications) is to have run_command throw
errors instead of returning strings for errors.