Fix name context in genexp optimisation
Add lazyTransform optimisation.

* It forwards in the code lazy variables used only once.
  def foo(): a = 2; print a
  become
  def foo(): print a

* It will give more work to constant folding
* Sould be good for scientists as they use a lot of variable as constant parameter (eg. R = rayon_of_earth, G = gravity, ....)