Introduce a tcx() helper method to cleanup this mess.
Make ty_bare_fn carry an optional def-id indicating whether it is the
type of a fn item or a fn pointer, which are now differentiated.
Introduce coercion from fn item to fn pointer.
Rote changes that don't care to distinguish between a fn pointer and a fn item.
Adjust metadata for new fields and enum variants. Yawn.
WIP -- FIXME required -- trans should make fn item types zero-sized.
Fix fallout from changes. In cases where stage0 compiler is needed, we
cannot use an `as` expression to coerce, so I used a one-off function
instead (this is a no-op in stage0, but in stage1+ it triggers
coercion from the fn pointer to the fn item type).