Add CSS classes and fix drop destination bug.

Draggabilly seems to set the location of the dragged element before
`onDragEnd` is called, so the actual drop destination can differ from
the expected drop destination calculated in `onDragMove`. To get
around this, we now retain the important information in the
`dragState`, so we can avoid recomputing the destination when the drag
is over.