Store brush transition state on the DOM.

Rather than capture the brush’s pre-transition state via closure, store the
state on the DOM like the axis component (this.__chart__). Now the brush can be
instanced on multiple elements, and each element’s pre-transition state can be
tracked separately, consistent with its display.

Further, restore the pre-transition state of the brush prior to emitting the
brushstart event, using the pre-transition data-space extent, if any. And
likewise, when the transition ends, restore the post-transition data-space
extent if available, rather than the less accurate pixel-space extent. Since the
data-space extent is restored when the transition ends, an additional brush
event is now emitted prior to brushend, since the extent may have changed.