Add custom drag image support

You can set custom drag images with "drag-image" attribution. drag-image will accept a function, with returns an object with three properties, image, xOffset, and yOffset, which are accepted by event.dataTransfer.setDragImage. For more details, please see [Drag Operations](https://developer.mozilla.org/en-US/docs/DragDrop/Drag_Operations#dragfeedback).