Fix a bug where dropping on Root never works.

DragEvent gets recycled, so by passing a DragEvent reference directly to
ActionHandler#dropOn, by the time the callback occurs, DragEvent is
updated to ACTION_DRAG_ENDED. ACTION_DRAG_ENDED events have no ClipData
and no localState, so the file operation never will occur.

Also added tests that involved ... refactoring lots of things.

Change-Id: I87daf1a4ec4e536701e03fd6dc53fc55829e5e51
16 files changed