Initial support for Drag and Drop

Items in the Source List can now be dragged and dropped inside the
Source List. The object checks where the user is trying to drop and
automatically prevents some common mistakes (like trying to drag a
parent onto its child). Updated example project accordingly.