Add scoped settings to config

WIP: Starting this super early if folks want to give feedback.

This moves the scoped properties from syntax into config and merges them with the 'global' config. 

### TODO

* [x] Add optional selectors to `Config::get/set`
* [x] Forward deprecated writes to `atom.syntax` to `atom.config`
* [x] Forward deprecated reads on `atom.syntax` to `atom.config`
* [x] Read from `atom.config` instead of `atom.syntax`
* [x] Register scoped properties with `atom.config` instead of `atom.syntax` when loading packages.
* [x] Allow scoped settings to be observed

Refs https://github.com/atom/atom/issues/3674
Here is the real new stuff. Please look over the method naming. They are private, but just make sure they arent confusing.