[NOT READY] Implement v1 new style format for #172

This is still kinda broken, but it's doing a lot of the things which are needed for the v1 new style format (#172). The current `bin/style.js` for this branch is a copy of the [outdoors-raw.js](https://github.com/mapbox/gl-style/blob/master/test/styles/outdoors-raw.js) from the mapbox/gl-style test styles, and it uses nested layers for roads. Because this hasn't been merged with @kkaefer's nested layer code from #140, the roads stuff is broken, and there are probably other reasons as well.

This is what it looks like now:
![screen shot 2014-05-21 at 10 01 42 pm](https://cloud.githubusercontent.com/assets/1828676/3049726/f0b5717a-e165-11e3-8187-d4fbd6379393.png)

... it's interesting, but definitely wrong.

This is the checklist of things which I'm pretty sure that I've ported to llmr-native from @mourner's https://github.com/mapbox/llmr/pull/363 (New style format). Many of the missing items were not implemented in llmr-native v0 to begin with, but there are probably also things which still can be done (line color pre-multiplying, etc), and which I don't really understand very well.

 * [ ] https://github.com/mapbox/llmr/pull/363
  * [x] debug/style.js
  * [ ] js/geometry/bucket.js
    * [x] Promote `text`, `point`, `line`, and `fill` from values to keys
    * [ ] Change the syntax for `point-size` from a dictionary to an array
    * [ ] Change `spacing` to `point-spacing`
    * [ ] Change `padding` to `point-padding`
    * [x] Add `bucketFilter` comparison for `source` and `feature_type`
    * [x] Change `join` to `line-join`
    * [x] Change `cap` to `line-cap`
    * [x] Change `miterLimit` to `line-miter-limit`
    * [x] Change `roundLimit` to `line-round-limit`
  * [x] js/render/drawcomposited.js
    * [x] Change `name` to `id`
  * [x] js/render/drawfill.js
    * [x] Change layer `color` to `fill-color`
    * [x] Change layer `stroke` to `stroke-color`
  * [ ] js/render/drawline.js
    * [x] Change line `color` to `line-color`
    * [x] Change line `width` to `line-width`
    * [ ] Change line `offset` to `line-offset`
    * [ ] Change `image` to `line-image`
    * [x] Change how the shader draws lines
  * [ ] js/render/drawpoint.js
    * [x] Change point `image` to `point-image`
    * [x] Change point `color` to `point-color`
    * [x] Change point `radius` to `point-radius`
    * [ ] Change point `invert` to `point-invert`
    * [ ] Change point `alignment` to `point-alignment`
    * [ ] Change point `rotate` to `point-rotate`
  * [x] js/render/drawtext.js
    * [x] Change text `path` to `text-path`
    * [x] Change text `rotate` to `text-rotate`
    * [x] Change text `size` to `text-size`
    * [x] Change text `fontSize` to `text-max-size`
    * [x] Change text `color` to `text-color`
    * [x] Change text `stroke` to `text-halo-color`
  * [x] js/render/painter.js
    * [x] Change `name` to `id`
    * [x] Change test from `bucket === 'background'` to `id === 'background'`
    * [x] Change class structure for bucket to reflect that `text`, `point`, `line`, and `fill` are now keys not values
    * [x] Determine the bucket type, taking into account that `text`, `point`, `line`, and `fill` are now keys instead of values of `type`
    * [x] Fix the warning about no bucket type being specified
  * [x] [js/style/bucket-filter.js](https://github.com/mapbox/llmr/pull/363/files#diff-3a3f624b8500f19b76f22bf9b3c7c6b8)
    * [x] Implement bucket filtering
  * [ ] [js/style/style.js](https://github.com/mapbox/llmr/pull/363/files#diff-6369a555a491e3e9a58fd29c3fd5a371)
    * [x] Change style's `structure` to `layers`
    * [ ] Change how line color pre-multiplication works
    * [x] Change `bucket.source` to `bucket.filter.source`
    * [x] Change `name` to `id`
    * [x] Update how classes and styles work
      * [x] Change `classes` key to `styles`
      * [x] Change `classes` syntax (value is array) to `styles` syntax (value is dictionary)
      * [x] Get rid of `name` key and promote its old values, `default`, `satellite`, and `test` to keys or, do it in a more general way where all top level keys become the name of a style. 
  * [ ] js/style/styledeclaration.js
    * [x] Change the structure of the javascript parsing engine to reflect multiple renamed keys
    * [ ] Change `linear` function to take a dictionary of parameters instead of an array
    * [ ] Change `exponential` function to take a dictionary of parameters instead of an array
    * [ ] Change how the `min()` and `stopsFn()` functions work
  * [ ] js/style/styletransition.js
    * [ ] Change how the interpolation of opacity, colors, line parameters, point parameters and raster parameters works for style transitions
  * [ ] js/text/placement.js
    * [x] Change `path` to `text-path`
    * [ ] Change `padding` to `text-padding`
    * [x] Change `maxAngleDelta` to `text-max-angle`
    * [x] Change `textMinDistance` to `text-min-distance`
    * [x] Change `rotate` to `text-rotate`
    * [x] Change `fontSize` to `text-max-size`
    * [x] Change `alwaysVisible` to `text-always-visible`
  * [ ] [js/ui/geojsontile.js](https://github.com/mapbox/llmr/pull/363/files#diff-c024919742f06de291fd7a82ca8d9e4a)
    * [ ] Change how filtering works for feature types
  * [x] js/ui/map.js
    * [x] Change `color` to `fill-color`
  * [x] [js/worker/worker.js](https://github.com/mapbox/llmr/pull/363/files#diff-80028004826fca2f5bc5142b8ca6ef91)
    * [x] Change how bucket filtering works
  * [x] [js/worker/workertile.js](https://github.com/mapbox/llmr/pull/363/files#diff-98670d9a9d7579d7f13daf74887fd97b)
    * [x] Change how features are sorted out of tile layers into buckets
  * [ ] test/styledeclaration.test.js
    * [ ] Change `width` to `line-width`

... and potentially also this:

 * [ ] https://github.com/mapbox/llmr/commit/7f76cc62f2910d8313d9659ff667011905a02a38
  * [ ] js/ui/rastertile.js

I want to merge this with #140 and see how close that comes to fixing things, but after that I'm probably going to need help to get it working right.

/cc @edenh @kkaefer @ansis @mourner @incanus @nickidlugash