Add Snap-to-Grid Functionality

Dragging with snap-to-grid functionality is a pretty common requirement. This allows users to give a snapDistance option to the draggable call that makes drag motions snap to grid as they go.