Add optional en_GB locale.

Also, expose the optional zh_CN locale as d3.locale.zh_CN.
Fix typos in optional locale definitions.
Add ca-ES for localization
Updated quadtree tests to check the `nodes` property of the node (a d3_geom_quadtreeNode) instead of treating the node as an array (which it is not) and trying to check indexes within it. e.g. `node[2]`.
Merge pull request #1801 from jimkang/fix-quadtree-child-tests

Fix quadtree tests that check the children of a node
Merge pull request #1800 from rogerbramon/ca_ES-locale

Add ca-ES for localization
Add d3.bisectBy(comparator).

Fixes #1766. Unlike d3.bisector(accessor), this allows you to define a bisector
that works in reverse order.

An awkward aspect of implementing bisection on top of a comparator is that it is
often the case that the sorted array contains objects (e.g., rows from a TSV),
while the search value is a primitive value (e.g., a number). Thus, you want to
apply an accessor to the array elements but not to the search value.

The solution here is to invoke the comparator deterministically: the first
argument is always an element from the array, and the second argument is always
the search value. This lets a comparator apply an accessor to array elements but
not to search values.
Instead of bisectBy, replace bisector.

For backwards-compatibility, bisector checks the arity of the specified
function, and if the function only takes a single argument, it is wrapped with a
suitable comparator.
Prefer interpolateNumber when coercible to number.

Objects that are coercible to numbers, such as Dates, are often more usefully
interpolated as numbers rather than as objects.
Fix all touches ending on any touch ending.

The drag behavior registers a touchend listener for each started touch; however,
a touchend event is dispatched to ALL listeners when any touch ends, not just
for the corresponding starting touch. The drag behavior must therefore detect
whenever the ending touch is the corresponding starting touch, and ignore other
ending touches.

This fixes the drag behavior during multitouch, as discussed in #1786.
Add d3.touch; fix #1786.

The drag behavior no longer crashes when the element being dragged is removed
from the DOM. In addition, the new d3.touch method extracts a single identified
touch from the current touch event, making it more efficient during multitouch.
The drag behavior now assigns touchmove and touchend listeners on the target
element of the touchstart event, rather than the window.
d3.touch defaults to changedTouches.

This way, it’s easier to tell whether the touch changed during the event. This
also fixes #1600 because the drag behavior now only dispatches a drag event on
elements that moved, even if multiple touches are active.
Remove workaround for WebKit bug 44083.

This was fixed in 2010, so I think it’s safe to remove the workaround now.
Clamp latitude for conic conformal projection.

The Lambert conic conformal projection extends to infinity along the outer edge
of the projection, and thus the latitude must be clamped either at -π/2 or +π/2
depending on the parallels. Fixes #1802.
Remove redundant Sizzle.uniqueSort call
Shorten selectAll to just `Sizzle`
100% to 125% faster #rgb/#rrggbb string parsing across all platforms. Tests pass. http://jsperf.com/rgb-str-vs-regex
Better ticks for subsecond domains.

Rather than starting the ticks on the minimum domain value, round up based on
the step size. Fixes #1757.
Listen to the touch target.

This ensures that if the touch target is removed from the DOM during a zoom
gesture, the zoom behavior continues to receive events; touch events, unlike
other events, are always dispatched to the target of the touchstart event rather than the window.
Fix ordinal scales with singleton domains.

Fixes #1717. Turns out, -1 % 1 is 0!