bug: Fix dnd to fully work.

This is a rewrite of basically the whole system to support use a directive instead of
just the controller.  The reason for this is that we need to use the DOM to determine
the new ordering and the tools for controllers to do this are rather weak.