Restore OpenMP support

Thanks to the rework of ndarray, everything is syndicated on a single
pair of functions!

Beware that nested parallelism is disabled, so parallelization of the
iteration over an int[2][1000000] is not good, while parallelization of
the iteration over int[1000000][2] is great. What can we do about this?
Merge pull request #246 from serge-sans-paille/restore-openmp-support

Restore OpenMP support
Merge pull request #247 from joker-eph/split_passes

Split passes
Merge pull request #244 from joker-eph/missing_import

Portability
Support using Python types as numpy dtype

To do so, the version of int() long() float() etc. without parameters
must be available.
Distinguish containers with dynamic or 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++.

Syndicate code with operator_:mod, do the same for operator_::floordiv
Support augmented assign for ndarrays
Add a difficult test case from parakeet
Fix dim_of error introduced in previous merge

It's only detected by g++, not clang++ and was caused by MA's
refactoring.
Merge pull request #245 from serge-sans-paille/parakeet-test-cases

Parakeet test cases
Fix modulo performance

Thanks coyotte for hinting.
Note that the branch is remove by both GCC and Clang.
Merge pull request #249 from joker-eph/modulo

Fix modulo performance (thanks coyotte)
Add missing import for exceptions

This is not part of the validation and was broken during passes
splitting.