Really start the drag only after the delay (if any given)

Before this fix, the element was not movable but the style was changed and the event
prevented.
It's now possible to use normally the event until the drag delay expires. Then the drag
really begins
Add a "dragDistance" parameter to defer drag based on the distance of the drag

When starting the drag, the distance between the origin of the drag and the current
position of the mouse is computed. If this distance is greater or equal to the drag
distance, then the drag is enabled.
Add "lockX", "lockY" and "boundTo" parameters to constrain movement.
Also constrain the maximum right position to the right of the dragged element.
Also constrain the maximum bottom position to the bottom of the handle of the dragged
element (or the old maximum bottom position if no handle is found).

lockX constrain the dragged element to move only vertically (lock the horizontal/X
position).
This parameter is a boolean "true/false".
Example : 'data-lock-X="true"'

lockY constrain the dragged element to move only horizontally (lock the vertical/Y
position).
This parameter is a boolean "true/false".
Example : 'data-lock-Y="true"'

boundTo constrain the dragged element to any given element. This parameter accept
a string selector that uniquely identify any DOM element.
Example : 'data-bound-to="'#my-parent-element'"'