[MRG] 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!

 
This is a API problem, discussed here (https://github.com/scikit-learn/scikit-learn/pull/3802#issuecomment-64115002) and slightly below and introduced in commit (https://github.com/MechCoder/scikit-learn/commit/79d1718db4318b9a7b9886fab97abc0681a332f7)

The problem is after getting the subclusters from Birch, the user has an option of clustering the subclusters by setting `global_clusters` to a clusterer. When one does a `partial_fit`, one would not want this clustering to happen after every batch of data has been passed and only after all the data has been passed. This is a workaround to solve this.