Fixes a bug where sometimes, an element's offsetParent would be null and an error would be thrown.
'start' callback is now passed a third argument: a function that when called will stop the element from being dragged. This is to allow you to decide in the callback whether you want the user to continue to drag, or end the drag early before the user is able to move it.