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"