Improve numpy.copy

* better type coverage
* I have tested that std::copy is used whenever possible.

with pythran
1000 loops, best of 3: 711 usec per loop  # 2d np.ones + copy
100 loops, best of 3: 7.7 msec per loop   # 2d np.ones + double copy
100 loops, best of 3: 8.66 msec per loop  # 2d list + copy

with cpython
100 loops, best of 3: 4.86 msec per loop  # 2d np.ones + copy
100 loops, best of 3: 7.96 msec per loop  # 2d np.ones + double copy
10 loops, best of 3: 76.8 msec per loop   # 2d list + copy
It seems to me that using a numpy_uexpr here woul prevent the memcpy
optimization.