[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!

 
Thanks. But surprisingly that is not the bottleneck. I just replaced 

    new_centroid = new_ls / new_n

by 

    new_centroid = (1 / new_n) * new_ls

and it brings the runtime from 8.13s to 7.36s. Is this expected?

A small experiment, 

    rng = np.random.RandomState(0)
    x = rng.rand(100000)
    tmp = 0.
    for i in xrange(100000):
        t = time()
        x / 2.
        tmp += time()- t

    print tmp / 10000
    tmp = 0.
    for i in xrange(100000):
        t = time()
        x  * (1/2.)
        tmp += time()- t
    print tmp / 10000

I get, 0.0014339951992  and 0.000599829173088 a factor greater than 2.