Add Lazyness Analysis

* this analysis count how many time a variable is use
* it is -1 if variable use to compute its value are modify
Use lazy analysis to type lazy variables

* Variable use few times are lazy variable and may be evaluate later.
  (Usefull for numpy expression template computation)
Fix ifilter optimisation

* Arguments in function have Param context instead of Store
Enable exception with no message
ConstantIntr are evaluate with the constantFolding

*Constant attributs are added in constant_expression, math::pi is useless now (except if we disable constant_folding)
*Attributs can be not a ConstantIntr like "math.cos", in this case, the to_ast
 function do nothing and it is perfect
Fix yield with default parameter

*default parameter gave a const type as default template arguments.
 As Yield create a generator with this types as attributes, we tried
 to assign a value to a const field with the default operator=. As it
 is incorrect, gcc delete this operator and we had the error: you try to
 use a deleted function : operator=
*if all parameters have a default value, we don't need the default constructors
Improve ConstantFolding

*right operator can be use in constant folding: "lala lulu".split()
Add bisect function

* add bisect and bisect_right (which are same functions)
Fix imap

* imap should be able to return a cst value in case of imap of imap for example
Add choice in random

* add the function choice which return a random value of the list
Add time function

*How can we test a time function???
Fix combine type

* Fix case when there are inclusion but one of them is weak (detected from rosetta)
Move list io to lish.h

* to have a correct behaviour for % operator on string
Add operation on empty_set

* at least, needed for type inference
Add test from rosetta