Actually do cleanup.

I found out, much to my surprise, that the ```cleanup``` function is pretty much a no-op in most cases. That is because when it's called from the ```ontouchend``` event handler, the ```this``` variable inside ```cleanup``` refers to ```window```.

This patch correctly binds the ```DragDrop``` object. It also modifies the ```snapBack``` method to work with the fact that some of that code needs to run after ```cleanup```.
this timeout was there as I had some issues triggering the snapback. if it does work synchronously, we should remove the IFFE completely