square/crossfilter — pull request #127 by sAlexander (2014-09-24 02:08:24+00:00)
Title: Clearing filter from dimension on disposal and propagating to groups.

Previously, if a filter was present on a dimension, disposing of the dimension would cause other dimension's group.all() counts to loose sync with the filters. In certain circumstances, values of group.all() would become negative.

A simple, representative test case is provided in the pull request to reproduce the error. A stranger example, where a dimension's group.all() becomes negative, is shown below:

```javascript
crossfilter = require("./");

var data = crossfilter([0, 0, 2, 2]),
d1 = data.dimension(function(d) { return -d; }),
d2 = data.dimension(function(d) { return +d; }),
d3 = data.dimension(function(d) { return +d+1; }),
g2 = d2.group(function(d) { return Math.round( d / 2 ) * 2; }),
all = g2.all();
d1.filterRange([-1, 1]); \\ a filter is present upon disposal
d1.dispose();
d3.filterRange([1, 1]);
console.log(g2.all());
\\ returns: [ { key: 0, value: 0 }, { key: 2, value: -2 } ]
```