Uses event handlers to support both Chrome/Safari (onDragStart/onDrag/
onDragEnd) and Firefox (onMouseDown/onMouseMove/onMouseUp).
Refactored some of the resizing logic to batch small movements to avoid
thrashing the UI rerendering (laggy jitter).
Refactored some of the document listeners so that they are tied to the component
lifecycle, instead of to UI events.