Drop Tool

Add base tool to facilitate drag and drop support.
No, I don't think so: we don't want to mark the event as handled if there is an exception, and we don't want to set a drag result if the `get_drag_result()` returns `None`, so there's nothing that always has to be done, no matter what.