SC.Drag refactor

SC.Drag now fire dragEnded when cancelling a drag and drop operation
using the escape key:
https://github.com/sproutcore/sproutcore/issues/513

Also fix a possible memory leak with the _cachedDropTargets property.
Added unit tests to ensure that dragEnded is call when a drag is cancel
Forgot to pass dragOp parameter
Removes dragExited method from CollectionView.

With the SC.Drag refactor now correctly calling dragEnded after dragExited (see SC.Drag docs; 5be078c), CollectionView no longer needs to remove the insertion point on both events.