Add major & minor extent and step to graticule.

Fixes #1009.
Default graticule step is now 10°. Better tests.
Remove unnecessary argument.
Deprecate d3.geo.greatArc; add d3.geo.distance.

Now that D3 supports great-arc interpolation automatically for projections,
there is no need for a great arc feature generator, as a simple LineString
geometry object is equivalent. For the same reason, d3.geo.graticule does not
need to use supersampling on meridians, since meridians are great arcs.

This commit also adds d3.geo.distance(a, b) for computing the length of the
great arc between points a and b in radians, as a replacement for the
deprecated d3.geo.greatArc method, and a faster alternative to constructing a
d3.geo.interpolate solely to measure distance.

Fixes #1021 #1024.
d3.geo.distance: accuracy for small distances.
Add d3.geo.length.
Rebind returns target when the source returns itself (i.e. chain rebound)
Ignore arguments length.  Return target if and only if the returned value is the source.
Add d3.set

Taking inspiration from d3.map, d3.set is a simple shim for ES6 sets.
Reuse d3_map_prefix
Allow d3.map to be used with d3.nest’s map.

You can now pass a map type to d3.nest’s map function. For example, if you pass
d3.map as the second argument to nest.map(array, type), the returned value will
be an instance of d3.map rather than a bar object. In addition to offering
better protection against built-in property names, d3.map offers more convenient
iteration methods.
Fix d3.geo.interpolate for coincident points.

This also improves accuracy for small distances, using the haversine
distance formula instead of the law of cosines.

Fixes #1080.
Add polyfill for mouseenter and mouseleave.

Fixes #931.
Add d3.geo.albersUsa.invert.
Expose projection.rotation.

This is useful if you want to specify the center in non-rotated coordinates.
Merge branch 'geo-length' of https://github.com/jasondavies/d3 into geo-length
Add tests for d3.geo.length.

Also return the perimeter for polygons.
Allow before function for selection.insert.

Similar to selection.select(function), the before argument to selection.insert
can now be specified as a function, so that the caller can specify the before
node dynamically. Supersedes #1071.
Allow row conversion function for d3.dsv.parse.
Allow optional row conversion function to d3_dsv.