ENH: 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.

Final performance comparison: (`N=2000`)

|function|new|old|ratio|
|--------|---|---|-----|
|`calculate_cluster_sizes`         |6.412us     |4.311us|   0.67|
|`cluster_dist`                    |96.512us    |66.189us|  0.69|
|`cluster_in`                      |101.771us   |75.218us|  0.74|
|`cluster_maxclust_dist`           |109.464us   |32.232ms|  294.45|
|`cluster_maxclust_monocrit`       |57.524us    |35.312ms|  613.87|
|`cluster_monocrit`                |45.735us    |110.519us| 2.42|
|`cohpenetic_distances`            |13.453ms    |12.893ms|  0.96|
|`get_max_Rfield_for_each_cluster` |47.574us    |30.777us|  0.65|
|`get_max_dist_for_each_cluster`   |45.652us    |27.045us|  0.59|
|`inconsistent`                    |108.824us   |104.382us| 0.96|
|`leaders`                         |48.046us    |32.613us|  0.68|
|`linkage`                         |1.799s      |4.375s|    2.43|
|`prelist`                         |42.730us    |27.669us|  0.65|
|`slink` (new)                     |26.9ms      |(1.82s)|   67.66|