Fix signature of by-name parameters.
Comments about phase orderings and shadowed references.

... try to explain two tricky consequences of the denotation and signature model.
renaming: core.transform.Erasure -> core.TypeErasure

The name duplications transform.Erasure / core.transform.Erasure
caused irregularities in the imports and the smae name was confusing.
Besides Erasure was the only class in core.transform, so it seemed
better to eliminate the package alltogether.
Make type creators work for erased types.

- Some types are different when erased (e.g. prefixes are NoPrefix)
- Some types are forbidden when erased. Put in assertions to check that fact.

Also, some renaming and doc comments to make creation of TermRefs and TypeRefs
clearer.
Add TypedSplice case to untpd.TreeAccumulator

We should simply treat a typed tree in a splice as an untyped one here.
Note: the same trick does not work for TreeMap - an untyped treemap cannot
be extended to produce a typed tree.
Move foreachSubTreeOf of to tpd.

Reason: The tree traverser created by it only handles the cases for typed tree nodes.
Also add convenience existsSubTreeOf combinator.
Fix context for super calls

Super calls need to have special contexts, going beyond super-mode.
It's explained in detail in Context#superCallContext.

this(...) calls also need special contexts, but this is not enabled yet
(some tests fail, need to track down why).
Account for package objects when constructing types of idents.

Make sure the package object appears in the prefix of a named type
where the symbol is owned by a package object.
Check that idents don't assume magic.

In TreeChecker, make sure that every identifier has a type with an elidable prefix.
This excludes identifiers pointing to members of random prefixes without making the
prefix explicit in the tree as part of a Select node.
Clean up printing of flags and params

Print all flags if option -YDebugFlags is set.
Clean up printing of class type params.
Fixes to erasure

Prompted by compiling more test files with erasure enabled.
Override symbolOfType in ReTyper.

So far, not needed, but is a reasonable precaution because the original
implementation of symbolOfType makes no sense for Retyper.
Fixing refined printing under -uniqid

Crashed before for untyped trees.
Special context for self constructor args

Arguments to this(...) calls need a special contet,
similar to - but different from - the supercall context.
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.
Fix to bringforward.

Always bring forward in initial phase. Fixes a stale symbol error discovered when compiling most
parts of dotc when turning erasure on by default.
Fix to baseClasses.

Need to be invalidated on new run along with superClassButs and baseTypes. Fixes a stale symbol error discovered when compiling dotc.core with erasure turned on.
Fixes to erasure

Makes erasure pass the test suite.

Erasure is not yet turned turned on by default, because TestNonCyclic fails
with a stale symbol error. The problem is that This types are coupled to Symbols
and therefore don't reload. This is a problem is This types refer to static symbols
that get recompiled. We either have to drop using This types for static references,
or redefine thme so that can be reloaded.
thisType of a module class is a term ref to the source module.

Module classes now always get the sourceModule term ref as their this type.
We would like to eliminate ThisType() of a module class completely, as this
hangs on to a symbol which might become stale for globally accessible modules.
This commit is the first step. It contains the change to thisType and the necessary
fixes to make the test suite pass.