Make shell.exec() treat process error return codes as shelljs errors

This PR makes shell.exec() handle error return codes the same way as other shelljs errors -- by calling common.error(). Especially in fatal mode, this makes error handling of exec more consistent with other shelljs functions.