WIP: cluster: rewrite hierarchy in Cython

`_hierarchy.so` was rewritten in Cython. The API is compatible with the original C implementation.
All tests pass but there may be still some bugs now. And documentations and comments have yet to be completed.

The original C implementation accesses the arrays directly with pointers and it is really fast. I use Typed Memoryview to make it more maintainable but it is a bit slower than the original version (about 20%). However, most of the functions in this module is O(n) and `n` would not be so large in hierarchical clustering, so I think it is not a big problem. But some functions are O(n^2) or O(n^3) and they need optimization.

`cluster_maxclust_monocrit_wrap` and `linkage_wrap` are optimized and they run several times faster than the original version.
Hmm, this comment seems a bit out of place. The distance functions look like they belong together in another file. Hmm, maybe put them in a `distance.pxi ` file and use the cython include statement to bring them in here. The comment can then go at the top.