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).
Insert coercions to fn pointer types required for the new types
post-unboxed-closure-conversion. This requires a fair amount of
annoying coercions because all the `map` etc types are defined
generically over the `F`, so the automatic coercions don't propagate;
this is compounded by the need to use `let` and not `as` due to
stage0. That said, this pattern is to a large extent temporary and
unusual.
Various simple tests for fn item type vs fn pointer type and for coercions between them.
Change print out to include the path to the fn, a bit ad-hoc for now .
Pull the if-then-else checking into its own file in preparation for refactoring it.
Fix some random shadowed lifetimes in ty_fold.
Address nit.