Rewrote the C function interface by using the FFI "standard".

This allowed the use a far more generic calling procedure and a better
float management.
Added assignment and changed the way types are annotated.