atom/atom — pull request #3613 by benogle (2014-09-24 01:43:05+00:00)
Title: Support JSON Schema in Config 

JSON Schema ([schema core](http://json-schema.org/latest/json-schema-core.html), and the [supported keys](http://json-schema.org/latest/json-schema-validation.html))

It will look like this:

```coffee
@config:
fontSize:
type: 'integer'
default: 16
lineHeight:
type: 'number'
default: 1.3
someArray:
type: 'array'
default: ['ok', 'yeah']
items:
type: 'string'
invisibles:
type: 'object'
properties:
eol:
type: 'string'
default: '\u00ac'
space:
type: 'string'
default: '\u00b7'
```

### Notes

* If a value is passed to `::set` cannot be coerced, it will not be set (eg. passing `'omg'` to an integer type)

### TODO

* [ ] support some of the fancy bits of the schema (minimum, maximum, enum)
* [ ] deprecate the `getInt` style methods
* [ ] use in our internal classes
* [ ] deprecate `configDefaults`
* [ ] write a doc about it I can point to
* [ ] make sure settings view works
* [ ] maybe remove deprecated calls from settings view