preliminary version of clusters

Adresses issue #1573 . Preparation for clustering, with an example that clusters random points and prints the clusters to console. Things to be done:
1) Tests
2) Refactoring
3) Not clustering features outside the given extent
4) Recalculating clusters on zoom/extent change
5) Clicking on cluster should zoom to the extent of the clustered features
6) (maybe add support for more clustering algorithms?)

Any other suggestions are welcome.
accessing object properties is relatively expensive, the loop can be optimized by assigning the length to a variable.  This pattern is generally used in the library.

```javascript
  for (var j=i+1, jj=this.data.length; j<jj; j++) {
```