By default, enter-insert before updating sibling.

Fixes #744. This implements a default `before` selector such that when entering
elements are inserted (e.g., enter.insert("div")), they are inserted before the
next following sibling in the update selection, if any. This change does not
affect the behavior of append, so as to preserve backwards-compatibility, and
likewise does not affect the behavior of insert on non-enter selections.
Add test for enter-insert.
Simplify test.
Fix test and add symmetric test for append.
Remember last non-null following sibling.

This way, we don’t rescan the same null elements.
Use linear segments for basis interpolation ends.

The first and last segment of a line interpolated using basis (B-spline)
interpolation are necessarily linear. WebKit appears to have a bug where linear
Bézier segments do not compute tangents correctly (presumably because the
control points are coincident with an end point, and the angle of a zero-length
vector is undefined). We can workaround this browser bug by using linear
segments for the start and end.
Fix line interpolation tests.
Merge branch 'master' into enter-insert-in-order

Conflicts:
	src/selection/insert.js
Add currency support to d3.format. Fixes #777.

You can now prefix the locale’s currency symbol. For example:

  d3.format("+$,.2f")(-2.5e5) // -$250,000.00

This implementation is limited in that it does not support currencies where the
symbol should appear after the value (e.g., "250,000.00 €" as in fr_FR). And
d3.format currently only supports a single locale. But it’s a start.
Fix #1364 - construct transition.event lazily.
Fix axis for scales that don’t define ticks.

In addition to ordinal scales, quantile, quantize and threshold scales don’t
define a ticks method. Unlike ordinal scales, however, these quantitative scales
also don’t define a rangeBand method, so the axis was crashing trying to render
these scales. This fixes #1367 by checking for the required rangeBand method
rather than assuming scales without a ticks method define a rangeBand.

Note, however, that even with this change you probably still want to define tick
values explicitly when using one of these scales with an axis. That’s because
each tick in the axis represents a span of values in the domain; you can use the
invertExtent method to get the span for each tick value.
Add missing quantile.invertExtent.

Like the quantile and threshold scales, the quantile scale represents a lossy
mapping where a span of values in the domain maps to a discrete range value.
Merge branch 'fix-basis-marker' into 3.2.4
Merge branch 'enter-insert-in-order' into 3.2.4
Color interpolators return color instances.

Fixes #1029. Previously, these interpolators returned RGB hexadecimal strings,
as the intent was for the color to be used to set attributes and styles.
However, since #333, all colors return RGB hexadecimal strings when coerced to a
string, so we can get the equivalent behavior by returning a color instance
rather than a string. Returning a color instance is also more useful in the case
where additional color manipulation (such as brighter/darker) is desired.
Merge branch 'interpolate-color' into 3.2.4
Merge branch 'lazy-transition-event' into 3.2.4
Merge branch 'fix-axis-no-ticks' into 3.2.4
Bump version.
Add compatibility shim for setAttribute[NS] in IE9.

Similar to style.setProperty, IE9 does not always properly coerce
attribute values to strings.  This causes issues when attempting to set
an instance of d3.rgb as an attribute value.  Now that d3.interpolate
can return d3.rgb instances, this situation can occur more frequently.

This compatiblity shim overrides Element.prototype.setAttribute[NS] so
that all attribute values are coerced to strings in IE9.