Add scoped settings to config

Status: looking for feedback :eyes: 

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
* [x] Update docs to explain the scope descriptors

Closes https://github.com/atom/atom/issues/3674
My reasoning at the time: you arent really setting the value. You're sort of suggesting that this is the value for a given scope. I'm down to change it to `set` for the sake of consistency, but it doesnt seem entirely accurate to me.