Hierarchical clustering refactoring

* Refactored cluster/hierarchical.py (more modular, allows different linkage criteria and decouples dendrogram representation from clustering algorithm).
* Added complete linkage criterion.
* Added unittests for linkage criteria

This is probably too premature to be pulled directly; I would like to get feedback if this refactoring is interesting for scikit-learn at all, what needs to be reconsidered etc. I am willing to write some further examples/unittests if you are interested in pulling these changes.

I tried my best to avoid breaking backward-compatibility, if you find anything which breaks, please report.