Preparing for floatarg patches 1

 * Lambda.Lfunction type : use a record instead of a tupple for
   easier extension
Preparing for floatarg patches 2

 * Clambda.Udirect_apply type : add the full function_description
   instead of only the label.
Propagate float parameters and return value information to lambda code
Propagate type information to clambda
Use type information in cmm

 * When a function can be specialised, it is compiled 2 times:
   one time normally, and one time with float parameters and
   returns unboxed. The specialised function has a label
   suffixed by "_direct"
keep compilerlibs directory