[MRG+1] Clustering algorithm - BIRCH 

Fixes https://github.com/scikit-learn/scikit-learn/issues/2690

The design is similar to the Java code written here https://code.google.com/p/jbirch/
I am pretty much sure it works (If the JAVA implementation is correct, ofc), since I get the same clusters for both cases. I opened this as a Proof of Concept.

This example has been modified, http://scikit-learn.org/stable/auto_examples/cluster/plot_mini_batch_kmeans.html
 
When `threshold` is set to 3.0

![figure_1](https://cloud.githubusercontent.com/assets/1867024/4772737/1dd8604a-5b9b-11e4-800d-aea031410a30.png)

When `threshold` is set to 1.0

![figure_2](https://cloud.githubusercontent.com/assets/1867024/4772748/2e46daec-5b9b-11e4-8f49-672b0ada17b7.png)

TODO: A LOT

- [x] Make it as fast as possible.
- [x] Support for sparse matrices.
- [x] Extensive testing.
- [x] Make the common tests pass, for now I have added it to `dont_test` ;)
- [x] Narrative documentation

Awating some initial feedback!

 
Yes, that is what I had meant too, in that way we avoid the pairwise computation below to find the samples closest to the merged euclidean centroids over here (https://github.com/scikit-learn/scikit-learn/pull/3802/files#diff-1741ad6b05f1eb0fd71af8bad0e001c7R524)

Can there be cases in which the labelling that you get directly as you have commented here is different from that from that of the nearest distance to the accumulated euclidean centroids. Basically that was that issue that @agramfort raised. (It seems unlikely to me though, but it might be possible)