GeoChoropleth refactor

Kind of a large refactor, which adds:
- Auto zoom to geo features with the current projection
- Graticule
- Sphere
- Title accessor for features
- Simplifies render and redraw functions

TODO:
- ~~Fix tests (changes to SVG class names don't match)~~
- Add moar tests!
- ~~Document~~

Future:
- [Projection change transitions](http://bl.ocks.org/mbostock/3711652):
```
var _projectionTween = function (projectionA, projectionB, width, height) {
    return function (d) {
        var t = 0,
            projection = d3.geo.projection(function (λ, φ) {
                λ *= 180 / Math.PI;
                φ *= 180 / Math.PI;
                var p0 = projectionA([λ, φ]),
                    p1 = projectionB([λ, φ]);
                return [(1 - t) * p0[0] + t * p1[0], (1 - t) * -p0[1] + t * -p1[1]];
            }).scale(1).translate([width / 2, height / 2]),
            path = d3.geo.path().projection(projection);

        return function (_) {
            t = _;
            return path(d);
        };
    };
},
```
- ~~[d3.geo.zoom (Jason Davies license?)](http://www.jasondavies.com/maps/rotate/)~~

Strikethroughs have been completed.

@mtraynham, does this cover the layer-removed case?  I haven't reviewed this thoroughly, but thought of this case because I was looking at #698.