Implement the `Fn` trait for bare fn pointers in the compiler

Implement the `Fn` trait for bare fn pointers in the compiler rather
than doing it using hard-coded impls. This means that it works also
for more complex fn types involving bound regions.
I just wanted to assert that I wasn't dropping any return value on the floor, I think (some of the `confirm` methods product a result you ought to use...)