More type inference optimizations

g++ faces a memory burst when meeting too much templated code. This
commit uses several techniques to avoid this, mainly by

* perform some type inference at pythran level (not easy because we
  manipulate abstract types intra-procedurally)
* alias operators that have the same typing behavior (e.g. + and -)

the new generator made a few flaws in the C++ typing part appear, they
are now fixed (at least on my machine...)
Optimizations using iterators :

* Analyse of potential iterators, even in user-created functions.
* Transformation of List Comprehensions intos map(...) when possible
* Transformations of intrinsics into iterators (ex : map -> imap)
* Transformation of remaining List Comprehensions into Generator Expressions
* Docstring with each transformation
* Test cases
Fix the reversed xrange implementation.
Fix constness of empty_list bool operator.
core::ltuple improvements

* automatic casting to std::tuple
* allow concatenation with std::tuple
Fix bug in imap iterator comparison

* handle the case of a map over two sequences of different size: stop as
  soon as one sequence is exhausted.
Fix type inference when combining ltuples and tuples

* relying on operator+ is a bad idea for tuples
Workaround some recursive typing limitations