Pattern transformer rewritting

* Same behavior but it will be easy to have specific behavior for a new
  ast Node
Add specialized square function for gmp
Add support for array of complex numbers

Emulates real and imag attribute using a numpy_gexpr. Currently only
supports read mode.
Add error message when using an invalid method
Merge pull request #315 from pbrunet/pattern_unordered

Pattern unordered
Unfold range as loop parameter if unrolling failed

Otherwise we end up with very long literals where a simple for loop is
much more efficient.
Merge pull request #314 from serge-sans-paille/fix-complex-numpy

Fix complex numpy
Merge pull request #316 from serge-sans-paille/range-unfolding

Unfold range as loop parameter if unrolling failed
 Better matching for Dict
Better matching for set
Fix documentation
Repeat optimisation until nothing change.
Raise error at slice ndarray interface
Merge pull request #301 from pbrunet/strided_input

Raise error at slice ndarray interface
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
Avoid long compilation time for set/dict pattern