Avoid firing repeated config events while packages are loaded

Refs #4666.

#### Problem
Currently, each scoped settings file or snippets file that is loaded from a package causes expensive events to be emitted on `atom.config`. Emitting these events is expensive because:
* The act of adding scoped settings clears the scoped settings cache
* Callbacks registered via `atom.config::onDidChange` or `::observe` receive the new property value as an argument. Computing the new value requires re-merging the scoped properties with an *empty cache*.

Merging scoped properties recently became more expensive due to deep-merging.

#### Solution

This adds two new methods to `Config` called `::pauseEvents` and `::unpauseEvents` which allow multiple config changes to be 'rolled up', firing only one change event.

Currently, I only use `::pauseEvents` when loading and unloading scoped settings in a package. I think the snippets package should also use it when loading snippets files from packages.

/cc @benogle @kevinsawicki
Why are we removing the event object? 

Looks like it will still emit when the values havent changed. Is that check handled at a different level?