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

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.

Fixes #4808.
Merge remote branch 'nmatsakis/issue-4808-representation-of-extern-fn' into incoming