Fix null transform attribute warning in Firefox.

Strictly speaking, the transform attribute should never be set to null;
it should be set to "translate(0)" for the identity transform, or it
should be removed using removeAttribute("transform").

Setting this attribute to null causes a warning to appear in Firefox:

  "Unexpected value null parsing transform attribute."

This occurs when using d3.transform(null), e.g. to interpolate to or
from a non-existent transform attribute (null).

This fix checks whether the value is null, and if so, returns an
identity transform.
Fix projection.clipExtent regression.

A bug was introduced in fa514dd08c9a6ac11e177da6051a76efe291d5ea, where
invisible line segments were incorrectly drawn.

Thanks to @jfirebaugh of iD for spotting it!
d3.geo.bounds: antimeridian and inflection points.

The behaviour of d3.geo.bounds has been modified slightly, such that the
minimum and maximum longitudes denote minimum and maximum meridians when
going from left to right in a standard equirectangular projection.

If the maximum longitude is in fact numerically smaller than the
meridian, this simply means that the bounds cross the antimeridian.

This fixes several issues:

* The bounding box is now a true minimum-width bounding box.
* Line segments that cross the antimeridian are now correctly handled.
* Similarly, polygons that cross the antimeridian are now correctly
  handled.

Secondly, inflection points are now detected, so that the latitudinal
range is extended in the case where the great arc contains the great
circle’s inflection point.

Lastly, support for polygons has been improved, e.g. those that wind
around the poles, and those that have a counter-clockwise winding order.

Note that as part of the winding order detection, the performance of
d3.geo.area had to be reduced somewhat (by as much as 25%).  This is
because the trick to avoid atan2 calls fails for winding order detection
in the case where a counter-clockwise area strays into a positive
quadrant.  We can reinstate the trick for area-only calculations in
future; I think correct winding order detection is more important at the
moment.

See #1154.
Tweak version generation.

Instead of relying on sed to replace a VERSION token, we generate
src/start.js, which defines the internal `d3` variable with the current
version derived from package.json.

In addition, all file generators (component, locale, start) have been
moved to bin/.
Remove redundant VERSION from test sandbox.

This is no longer needed due to
22b744b7e60122bee5abb82642ecb4feefa873d0.
Fix time tests by adding Date to sandbox.

Since tests are now run in their own sandbox, assert.deepEqual was not
properly testing the returned Date objects for equality, as they weren't
instances of the same Date class used by the test itself, causing type
inference to fail.  It was always returning true, even for different
dates.
Preserve domains exactly.

Fixes #1241. With d3.scale.pow, d3.scale.sqrt and d3.scale.log, the underlying
implementation is a linear scale. Due to the transformation a linear domain and
the limits of floating-point precision, the reported domain could differ
slightly from what was set. Now, the set domain is preserved exactly.
Fix #1247 - more robust interpolation, again.

This removes the use of interpolateString if the start and end values passed to
d3.interpolate are different types; the interpolation behavior should be based
solely on the end value. Now if you interpolate an undefined attribute (the
empty string) to a number, it will use number interpolation as expected.

This also fixes interpolateString such that it always returns a string, even if
both the start and end value are coercible to numbers.
Merge pull request #1236 from mbostock/time-sandbox

Fix time tests by adding Date to sandbox.
Merge remote-tracking branch 'origin/geo-bounds' into 3.1.7
Merge remote-tracking branch 'origin/clip-view' into 3.1.7
Merge remote-tracking branch 'origin/transform-null' into 3.1.7
Merge remote-tracking branch 'origin/fix-scale-domain' into 3.1.7
Merge remote-tracking branch 'origin/fix-interpolate' into 3.1.7
Bump version.
Redesigned d3.geo.albersUsa.

This commit changes the albersUsa projection so that it uses a custom projection
stream rather than a custom projection function. The projection stream passes
geometry to all three constituent projections, which are then clipped to their
respective viewports. The result is that geometry that appears in multiple
projections (such as a graticule) is now rendered correctly in each, with
clipping! In addition, the inverse projection is much easier to compute because
the viewport regions of each projection are explicitly defined.
Tweak viewport positions slightly.
Keep albers and albersUsa consistent.
Save a few bytes.
Adopt more standard projections for AK and HI.

This adopts EPSG:3338 for Alaska and ESRI:102007 for Hawaii.