Angular directive to reorder elements with drag and drop