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
Yeah, it wont assign `[x, y] = arguments` with `arguments`.