1 - introduce flambda type
2 - Flambda check functions

Fix tests with an environment

Fix 1: explicit what functions free_variables really means, fix the checks
 flambdacheck

Fix 1: let_kind type is more explicit flambdacheck

Fix 1: Abstract static exceptions flambdacheck

Fix 2: less willcard patterns in flambdacheck
3 - generate flambda from lambda

Fix 1: let_kind type is more explicit flambdagen

Fix 1: Abstract static exceptions flambdagen
Fix lazy and exceptions allocated as immutable blocks

This didn't matter until now, but some passes could assume that
immutable block are not mutated. For exception that means that
structuraly equal exceptions can't be shared, hence preventing
exceptions declared by a functor to be staticaly allocated.
Add -dflambda ocamlopt option