Replace call to unimplemented method runtimeCall

Use ref and appliedTo instead.
Facturing out EnclosingMethodTraverser from CapturedVars

The idea to traverse with currently enclosing methid is also used in
LambdaLift and could be used elsewhere.
Make enteredAfter, installAfter more forgiving as to when they are called.

Instead of requiring to be called a given phase, change the context if
that is not the case.
Add isProperlyContainedIn method
Fix lifting of application:

Lifting an application  `f(arg1).f(args)` requires lifting of the whole prefix
`f(arg1)`, because `f` might have a side effect.
Replace tree.withName with {tpd|untpd}.rename.tree

Advantage: Can rename typed as well as untyped trees.
Take receiver into account when selecting default getters.

Previously, we determined the default getters solely from the method TermRef type.
This is wrong if the method is prefix is not a path -- the prefix of the term ref will be a
TypeRef and the getter selection will be a SelectFromType tree, which makes no sense.
Treat @static as a source flag.

It changes meaning drastically so should always be visible.
Allow relaxed typing of applications

Some transformations encounter applications where new arguments ahve to be
supplied. The method type already accounts for these argument but the
Application node passed into TreeTransform#transformApply is constructed
with a cpy.Apply operation which does a type assignment. That type assignment
fails with a parameter mismatch unless relaxedTyping is on.
Take environment into account when typing a closure.

Environment parameters do not count in th eresult type.
Erasure should keep prefix in termrefs.

The current formulation of lambda lift is easier to do if that's the case.
Drop type declarations from erased ClassInfo

Need to drop all non-class type declarations.
Uncurry also in DefDef trees, not just in infos.
Fix handling of type params in secondary constructors

Params are already added by Desugar. No special treatment needed here.
Besides primaryConstructor.typeParams is always empty, because term symbols
do not have type parameters.

The fix turns t2660.scala into an error. I believe the error is correct, hence
the test was moved with a comment to neg.
Fix tree typing to account for trees after constructors is run.
New utility methods in SymUtils
Account for PolyProto and IgnoredProto types in expectedTypeStr
Fix to primaryConstructor

Primary constructor was picking last constructor instead of first one.
This is now fixed. Also, added paramAccessors utility method.
Add constructors phase
Combine captured vars and constructors into one macro phase.

Needed to fix a problem in CapturedVars to make this work.