Fix #1369 - localized decimal point.

The old implementation was broken because string.replace returns a new string
rather than modifying the string in-place (obviously, because strings are
immutable), and was further broken because the localized thousands separator can
be "." in some locales. This new implementation breaks the value into separate integer and decimal parts to avoid such confusion.
Rename base to symbol.
Fix #1373 - suppress touchstart on drag.

This is not ideal because it disables clicking on draggable links, but as we are
forced to suppress the touchstart event (before any movement) in order to
disable touch-to-drag or pinch-to-zoom, I think this is the only option. Or, we
might dispatch a synthetic click event if the touchstart is prevented.
Separate touch and mouse drag listeners.

Rather than combining the same listener for both mouse and touch, we now use
closures to avoid code duplication. This offers cleaner separation and avoids
registering touchmove and touchend listeners on mousestart, and likewise avoids
mousemove and mouseup listeners on touchstart.
Fix #1381 - separate touch and mouse zooming.

When a touchstart event is received, the default mousedown and mousemove
listeners are now removed so that mouse-related events are not duplicately
handled by the behavior. In addition, the touchstart’s default behaviors are now
prevented, for consistency with the drag behavior and to prevent native panning
or pinch-zooming.

This commit also cleans up the zoom behavior implementation such that touch
listeners are implemented consistently with mouse listeners, using temporary
closures that are registered on touchstart and removed on touchend. Likewise,
the zoom behavior no longer prevents the default behavior on all events, instead
applying d3_event_dragSuppress to prevent specific behaviors.

The drag behavior no longer requires a capturing listener for mouseup or
touchend because it does not (as of 3.2.2) stop propagation on these events.
Separate namespace for d3_event_dragSuppress.

Previously we were reusing the component’s namespace to suppress drag events;
however, this had the unintended effect of the drag suppress’s touchmove
listener being overwritten by the component’s touchmove listener. To prevent
this, the drag supression listeners now use a separate namespace.

This commit also switches to preventing the default behavior on touchmove rather
than touchstart, which still prevents panning and pinching while enabling click
events to still fire.
Fix rounding problems with log scale nicing.
Fix another rounding bug in log.ticks.
Simplify.
Merge branch 'fix-localized-decimal-point' into 3.2.5
Merge branch 'fix-suppress-touchstart' into 3.2.5
Merge branch 'fix-log-scale-rounding' into 3.2.5
Merge branch '3.2.5'
Prevent default on dbltap.
Fix log.nice.
Remove symmetric Math.log.

Since Math.log is a monotonic function for positive values, we can safely remove
the Math.log from both sides of the comparison. The reason Math.log was used
previously is that this is an estimate of error (the log difference between the
desired number of ticks and the actual number of ticks).
Fix #1402 - transition callback order.

Rather than registering new timers, reassign the transition’s timer callback in-
place such that the order of callbacks for transitions is always prioritized
based on when the transition was created.
Remove mouse listeners from intended target.

Related #1381.
Isolate temporary state while touching.

Previously we were trying to be clever and reuse the translate0 state while
touching; it’s simpler to just use a separate variable. Also, this commit now
restores the mousedown listener on touchend, just in case the device happens to
support both mouse and touch.
Fix #1407 - transition.filter crashes on empty.

Also remove unneeded third argument to d3_transition since transition.time is
now stored on the per-node transition object.