Fix recurring errors when a non-existent package is disabled

Two problems:
* `PackageManager::activatePackage` throws an error when disabling a non-existent package. It should probably just reject its promise.
* `Config` observers get into a bad state when callbacks throw exceptions.

Fixes #4721
Yeah, this and some other similar duplication was removed in #4567 (storing all config settings in the `ScopedPropertyStore`). I think we should leave it alone until we revisit that PR.