Fix recurring errors when a non-existent package is disabled

:warning: WIP :warning:

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
Since `oldValue` was updated *after* calling `callback`, it would never be updated if `callback` threw an exception.