Distinguish containers with dynamic size from containers with static size

Use a type trait to achieve this goal, useful for list to tuple versus
array to tuple conversion.
Support the len_of trait for itertools.imap

In the way, fix a very subtle way of iterators not iterating on the same
object due to copies...
Support passing a tuple as parameter of numpy.ndindex

Also fix a bad iterator typing issue in the associated iterator.
Fix behavior of the modulo operator in presence of negative input

C++ and Python differ on that point: the output is always positive with
Python and not in C++.
Support augmented assign for ndarrays
Add a difficult test case from parakeet