Simplestyle

NOTE: Merge #2148  and #2161 before even looking at this (since the diff is overly large without them).

I would like to get this into 1.2, if possible.

* Added `GeoJson.fromUrl` to make it easy to add a data source in less code.
* Added support for the GeoJSON [simplestyle specification](https://github.com/mapbox/simplestyle-spec). [Sandcastle example](http://localhost:8080/Apps/Sandcastle/index.html?src=GeoJSON%20simplestyle.html);
* Added `PinBuilder` class for easy creation of map pins. [Sandcastle example](http://localhost:8080/Apps/Sandcastle/index.html?src=PinBuilder.html);
* Added `Color.brighten` and `Color.darken` to make it easy to brighten or darker a color instance.
* Changed default `GeoJSON` Point feature graphics to use `BillboardGraphics` with a blue map pin instead of color `PointGraphics`.

Here's what the pins generated by the new `PinBuilder` class look like:
![image](https://cloud.githubusercontent.com/assets/1495196/4452134/fb3e54b6-4841-11e4-8d7b-3554d6e98dda.png)

I don't think you actually need to manually create and resolve a deferred.

```javascript
var promise = loadImage(url).then(function(image) {
   //etc
   // at the end
  cache[id] = canvas;
});

cache[id] = promise;
return promise;
```

The other code paths can just cache and return `canvas` directly.  Then change the documentation for the public API functions to indicate that they can return either a Canvas or a Promise for a canvas, and let the caller be responsible for handing that by using `when` to lift the result to a promise.

Creating deferreds is typically only necessary when interacting with non-promise-based APIs.