Merge DragNode and DragMidpoint

Adds shared behaviors such as snapping to DragMidpoint