Rework course overview drag and drop.

Failed drags bring the element back to where it started; elements are
locked to the y-axis, states are represented as CSS classes for
styling, elements can be dragged across section/subsection borders,
and dragging to the top/bottom of a section Just Works™.

Needs some styling love to give visual representation of where the
dragged element will drop, though.

TODO: It'd be good to have auto expand/collapse for subsections.
Add auto-expand to overview lists.
Make all of section/subsection/unit draggable.
CSS classes for drop targets.
Address PR comments.

Remove unused variables; some changes to match existing BDD spec for
drag/drop (expand-on-hover timeout and dropping with mouse outside of
element); bugfix for section expand; some code cleanup; update and
re-enable acceptance test.
Fix not being able to expand an empty subsection.
Add some Jasmine tests for drag/drop.
Add more Jasmine tests for drag/drop.
Studio: adds in minimally revised drag and drop styling
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.
Studio: adds in minimally revised drag and drop styling