Version 2 stylesheet description

Remaining tasks:

- [ ] Add ways for adding sprites
- [x] Add composite class
- [x] Add raster
I think we should use `Point`, `LineString`, and `Polygon` to match both GeoJSON and the [vector-tile](https://github.com/mapbox/vector-tile-spec/blob/1d35c94ee48b61f7e9b549206f0fb20b41f841c4/1.0.0/vector_tile.proto#L9-L12) specs.