Don't call jQuery.cleanData in presence of beforeRemoveCallback

In writing an Isotope Knockout binding, I discovered a bug in KO. When combined with jQuery, KO always calls jQuery.cleanData. This is a bad thing if a beforeRemove callback is supplied to the foreach binding, [as it is the beforeRemove callback's responsibility to remove DOM nodes](http://knockoutjs.com/documentation/foreach-binding.html).

The specific issue with Isotope is that my binding needs to let the former remove DOM nodes, and Isotope depends on data it has set via jQuery.data. Thus, KO trips up Isotope by calling jQuery.cleanData. 

I have included tests to verify my modifications, and verified that they pass with Node and PhantomJS (via build.sh) on Windows. They also work with Chrome.