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
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.
 Better matching for Dict
Better matching for set
Fix documentation
Repeat optimisation until nothing change.