Lift restriction on calling extern C functions, and propagate
the ABI as part of the type of an extern fn. cc #3678
auto merge of #5759 : nikomatsakis/rust/issue-3678-type-of-extern-fns, r=nikomatsakis

r? @pcwalton

This in combination with the changes @pcwalton is doing gets us very close to the final design.