fix #1285 improving the precision of Drag utility and slider widgets

This commit changes the strategy to compute the new position while
dragging a DOM element with the drag utility.

Previously, the new position was computed by using the difference of
coordinates between the previous mouse move event and the current mouse
move event, thus accumulating rounding errors at each mouse move event.
Because of this, the distance between the mouse and the dragged element
could increase or decrease significantly while dragging the element.

Now, the new position is computed by using the difference of
coordinates between the start of the drag (which is a fixed reference)
and the current mouse move event, thus making sure the relative position
between the mouse and the dragged element stays the same until the mouse
is released.