ref(<type>) -> TypeTree

Taking the ref of a type should always give a TypeTree. Makes ref more
universally usable as type references after frontend are assumed to be TypeTrees.
New minipahse: AttachOuter

This keeps type info needed for explicit outer in attachments
so that it survives erasure.

ExplicitOuter should run after erasure, for several reasons.

(1) Java generic signatures do not include the outer parameter
(2) Pre-erasure typings become incorrect after erasure. In particular,
    if we have a class

       class C {
         type T
         class Inner {
           type U = C.this.T
         }
         val inner: Inner
       }

after explicit outer the equality of T and inner.U is no longer provable.