Change bare functions so that they are represented by a single pointer.

Fixes #4808.

r? @brson

The basic idea is that we add a new kind of adjustment, AutoAddEnv, that pads an `extern fn` into a closure by adding the extra NULL word.  Then there are a few misc changes in trans to get the LLVM types to match up.