Don't pass keyPath to Config::onDidChange callback

The keyPath field was never used by core or any package, and
for scoped settings, its value was always equal to the keyPath
specified by the caller.
Add Config::transact

Use this method to avoid emitting unecessary config events
when activating or deactivating multiple packages
Merge pull request #4672 from atom/mb-optimize-config-events

Avoid firing repeated config events while packages are loaded