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.