[WIP] Hierarchical Agglomerative Clustering

Introduces complete and average linkage, with structure.

TODO:

* Narrative documentation
* Increase test coverage
* Implement other distances for average and complete linkage
* Probably deprecate Ward* classes
* Probably move the FloatIntDict to the utils module

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?