Use std::copy instead of a loop in broadcast copy

* generate a pointer instead of an nditerator when iterating over a non
  strided array, so that std::copy can speciailized to a memcpy
Faster implementation of numpy.zeros

Use calloc whatever the dtype. It's not 100% bullet proof for floating
point numbers but it seems ok on modern architectures.
Use std::fill instead of a raw loop in broadcast copy
Manually unroll some std::array copy in numpy_gexpr initialization

std::copy is slower there as it uses memcpy (and a function call) for
very small arrays (the shapes...)
Avoid some code redundancy in numpy_gexpr initialization
Merge pull request #322 from serge-sans-paille/faster-nditerator

Faster nditerator