Get all unit tests to pass
Process mk_fun_ty function

This one is tricky.
We have to replace mk_fun_ty by (fun ty -> Choice.get << mk_fun_ty ty)
in many places.
Now fusion module is safe to use