Don't write the config to disk so darn often

Two problems:
* When we started using `Config::set` for all settings (rather than `::addScopedProperties` et al), we accidentally introduced a lot more writes of the config to disk, particularly when initially loading packages. We shouldn't be saving the user's config to disk when we're using a `source` other than the user's config file.
* The settings-view calls `::set` *a lot*. This ought to be ok. We don't need to synchronously save the config every time set is called. We should throttle the writes.

Fixes #4770.