ENH: cluster: reimplement the update-step of K-means in Cython

The current implementation of update-step in `vq.kmeans` and `vq.kmeans2` is inefficient due to unnecessary copying and high cache-miss rate (I guess).

I calculate the sums of obs in each cluster first and then divide them by the numbers of obs. It should be more efficient. And the benchmark shows that the speedup seems to be significant for low dimensional data.

```
old:                        new:
                            
30000 x 100, k = 10         30000 x 100, k = 10
--float64: 15504.6652ms     --float64: 12687.4250ms
--float32: 6647.2686ms      --float32: 5272.2000ms
                            
10000 x 1, k = 3            10000 x 1, k = 3
--float64: 96.9102ms        --float64: 41.6186ms
--float32: 99.7274ms        --float32: 41.9904ms
                            
100000 x 3, k = 4           100000 x 3, k = 4
--float64: 1396.6506ms      --float64: 529.0992ms
--float32: 1028.3450ms      --float32: 431.0248ms
                            
10000 x 30, k = 10          10000 x 30, k = 10
--float64: 1164.1506ms      --float64: 752.1930ms
--float32: 992.7966ms       --float32: 658.1064ms
                            
1000 x 3, k = 4             1000 x 3, k = 4
--float64: 30.8582ms        --float64: 9.8542ms
--float32: 31.3026ms        --float32: 12.4894ms
```
Could do
```
for feat_index in range(nfeat):
    cb_p[0] += obs_p[0]
    cb_p += 1
    obs_p += 1
```
Which will leave `obs_p` pointing to the next entry on exit from the inner loop. This would all be easy in C, but Cython doesn't deal with pointers, no dereference operator. Using pointer arithimetic might buy you 10-20% in execution time, but probably a premature optimization here.