Fix d3.geo.circle clipping.

This uses a new algorithm, based on Weiler-Atherton. The difference is
that we only need to clip against a single line (the circle), so this
simplifies things somewhat. Rough summary:

1. For each ring in each polygon, intersect with the circle and generate
   an array of segments. This same routine is used on its own for
   LineString and MultiLineString features.
2. Since we're dealing with closed polygons, we check the first and last
   segment to see if they should be merged into one.
3. Create a circular linked list containing the intersection points, in
   clockwise order of their position on the circle. For each start
   point, include a reference to the end point.
4. Finally, traverse the linked list, starting with an entering
   intersection point, inserting the segment and then following the
   reference to the end point. Then, interpolate along the circle edge
   to the next (clockwise) point, which should always be an entering
   point, and repeat until the start point is reached. The resulting
   ring is added as a polygon.
5. Continue with step 3 until all entering points have been visited.

To do: assign holes to their correct polygons, perhaps using winding
numbers. At the moment holes are essentially added as separate polygons,
which works for drawing since they're in anticlockwise order.

Fixes #691.
Fix d3.geo.circle inter{section,polation}.

Originally, the intersection calculation was incorrect, although only
noticable for more distant points e.g. in the icosahedron example. An
attempt to use aviation formulae [1] for this ended up running into
issues around the poles, so the new version calculates the intersection
of two planes in Cartesian coordinates, and the subsequent circle
intersection point. This is a) simpler and b) speedier!

In addition, the interpolation around the clip edge was problematic if
the distance around the edge was greater than π. It now always correctly
interpolates in a clockwise direction, up to 2π. Again, this is done in
Cartesian coordinates.

[1]: http://williams.best.vwh.net/avform.htm#POINTDME
Slightly nicer default precision.
Clean up example slightly.
Move and rename some internal functions.
Add d3.interpolateStringMissing.

Instead of immediately replacing missing start numbers with the
corresponding end numbers, d3.interpolateStringMissing interpolates from
an arbitrary starting number to each end number.

This is especially useful for working around some browsers that
automatically remove optional zeroes from the SVG transform attribute.
Rather than using d3.tween with d3.interpolateString,
d3.interpolateStringMissing(0) should be more robust.
Add support for parsing weekdays and week numbers.

Also includes support for parsing "%" literals.
Minor simplification.

Remove redundant "+=" in return statements.
d3.geo.path.centroid: [Multi]{Point,LineString}.
Fix typo in test.
d3.geo.path.centroid: {Feature,Geometry}Collection.
Add dimension tests for GeometryCollection.
GeometryCollection: test empty higher dimensions.
Allow for a single centroid with zero weight.

This allows us to support a LineString containing only coincident
points, which has zero length but it seems more useful to return the
coincident point rather than null.
d3.time.format: more robust day-of-year parsing.

Setting the number of milliseconds directly is prone to errors due to
daylight saving offsets. Thanks for noticing this, @mbostock!
d3.time.format: more robust week-of-year parsing.
Revert "Allow for a single centroid with zero weight."

This reverts commit f57ae0289605a7656d9c73c9df24e682cea9ca59.

I think it's more sensible to return null in this case after all. This
also seems to be consistent with GDAL.
Add d3.geo.path.bounds.

This computes the bounding box for a given GeoJSON object using the
current projection.
Simplify d3.geo.bounds implementation.

Also, add rudimentary test.
Rename d3_path_circle for consistency.

I guess this may end up in d3.svg at some point, but consistency is
good!