Use additional precision for accumulating area.

This uses double the available floating point precision, so that
small floating point errors do not accumulate too quickly.

Fixes #1305.
Optimize d3_geo_accumulator.
Shave a few bytes.
Fix #1311 - more robust tick insertion.
Rename d3_geo_accumulator to d3_adder.

It’s not strictly geo-specific, so math seems like a reasonable place for it.
Use user-select: none instead of preventDefault.

The use of preventDefault while dragging or zooming was preventing
desirable defaults from being triggered.  Using user-select: none is a
less intrusive way to prevent text from being selected.

If user-select or a vendor-prefixed user-select is not supported, we
suppress the selectstart event instead (for IE9).

Note that Firefox has a bug where absolutely-positioned elements do not
inherit the -moz-user-select style from the body element, so users may
wish to additionally set -moz-user-select: none on absolutely-positioned
elements, at least until this bug is fixed:

  https://bugzilla.mozilla.org/show_bug.cgi?id=648624

Fixes #1288, #1099.
Add pack.radius for explicit radius.

Fixes #857. By default, the radius of each circle in the pack layout is derived
from the square root of the node’s value, which is then scaled according to the
bounding box of all circles and the layout’s size. By specifying a radius
function, you can now explictly control the radius, disabling automatic scaling.

The radius function takes the value as input and returns the corresponding
radius. If no radius function is specified, automatic scaling is enabled; this
is the default. Conveniently, d3.scale.sqrt can be used as a radius function.
Merge branch 'user-select' into 3.2
More robust vendor prefix detection.

The previous implementation depended on CSS3 transforms being vendor-prefixed,
and would assume no vendor prefix if the browser supports transforms natively.
Now we detect the vendor prefix on a case-by-case prefix, rather than assuming a
single global prefix.
More flexible scale.nice. Fixes #1088.
Condense code.
Add tests for variable scale.nice.
Merge branch '3.2'
Add pinch-to-zoom support for Android.
brush.clamp: return null if there are no scales.

Similarly, if there are no scales, setting a clamp does nothing.

For consistency with brush.extent.
Fix transition.selectAll with null nodes.
Fixes for non-orderable values.

In addition to NaN, which is not equal to itself, you can have objects that are
not orderable due to defined valueOf functions which return NaN. For example:

  var o = new Number(NaN);

Here, o == o is true, but o <= o is false. Therefore it was possible for d3.min,
d3.max and d3.extent to observe these non-orderable values rather than ignore
them as intended. The fix is to check !(o <= o) rather than o == o.

This commit also fixes d3.bisect when the search value is non-orderable.
Previously, bisectLeft returned lo for non-orderable values, and bisectRight
returned hi. However, if the search value is non-orderable, then this return
value does not satisfy the conditions of bisection. This commit changes the
bisection methods to return NaN when the search value is non-orderable.

As a side-effect, the fix to d3.bisect now causes d3.scale.threshold to return
undefined when passed a non-orderable value, such as undefined. (Previously, a
threshold scale would return the highest value in the range, because it used
bisectRight internally.)
Slightly shorter.
Return undefined, not NaN.

Since the quantile scale allows arbitrary values in the range, there’s no reason
the return value for unorderable input needs to be a number.
Restore undefined behavior for d3.bisect.

Rather than return NaN, this change restores the previous undefined behavior
when an unorderable value is used for bisection. After discussing with Jason, I
think this is more consistent given that d3.bisect also requires that the input
array is sortable, and therefore only contains orderable values. Thus, it is the
responsibility of the caller to check that the search value is defined before
doing bisection, and so this commit fixes the threshold scale rather than the
bisect method. (Also, this is consistent with the existing quantile scale.)