Every call to Error::ignoreException() should have matching call to setCallback()

After observing an upgrade problem that was logged but not reported as an error, I investigated a bit about how that could happen. Various spots in the code suspend error reporting while they run error-prone operations -- most of them restore the error-handler afterward, but a couple don't (consistently) do so. The PR addresses this.

This PR has not been tested. Submitting PR to solicit feedback form folks who know more about why error-reporting was suspended in CRM_Case_BAO_Case and CrM_Admin_Form_Setting_Smtp.