Assign ABI to extern fns and propagate 

Lift restriction on calling extern C functions, and propagate the ABI as part of the type of an extern fn. cc #3678