[MRG+1] Hierarchical Agglomerative Clustering

Introduces complete and average linkage, with structure.

TODO:

* [x] Narrative documentation
* [x] docstring
* [x] Increase test coverage
* [x] Implement other distances for average and complete linkage (half done, only callable and precompute are still needed)
* [x] Probably deprecate Ward* classes
* [x] Probably move the FloatIntDict to the utils module
* [x] Finish the example

Single linkage will come in a later PR, as it should use a different algorithm based on minimum spanning tree.

@vene : do I remember right that you had expressed interest in working with me on having different distances in this PR?