Add cloneScope method and handle versioning of ClassInfo#decls

This is done to streamline changing class denotations in new phases
by adding to (or otherwise modifying) their decls scope.
Make SuperAccessorName and extractor.

Should do the same with other name-creator/name-test pairs.
Added MacroTransform as a transformer template for macro phases.
New utitility methods in tpd.

Added the following utility methods:

 - polyDefDef: Create a DefDef given a function that takes type and value parameters and yields a body.
 - appliedToTypeTrees: Apply function to type arguments ion a TypeApply if arguments are nonempty.
 - mkAsInstanceOf
 - ensureConforms: generate a cast if expression has non-conforming type.
ThisType trees have their class as a denotation

Added this case, so that .symbol on a ThisType returns the underlying class.
Error method for implementation restrictions
Improved printing of flags

(1) Make sure ModifierFlags is TermFlags and TypeFlags
(2) Shorten private <local> to private[this]; same with protected
(3) Print [this] for local symbols in RefinedPrinter
Added phase: SuperAccessors

Rewrote SuperAccessors (more to be done; see comments), and
added stuff here and there to make it work smoother.
Rename SignedType -> MethodicType

... for the common supertype of MethodType, PolyType, and ExprType.
Signed was confusing.
Fixed problem with installAfter

The problem is that when an installAfter completely replaces a previous denotation, a symbol or NamedType
might still hang on to that denotation in the cache. We need to enforce that we switch to the new denotation.
This is done by setting the replaced denotation's validFor field to Nowhere.
Removed test case

d.T is an access to a structural type member, so rejecting this is OK. Not sure why we compiled
this before without warning.
Changed PostTyperTransformer scheme

1) We now always generate companion objects for classes. This is done in
   mini-phase "companions", which also assures that companion-modules appear
   after companion-classes.

2) PostTyperTransformers is gone; the part which normalizes trees has been
   rolled into TreeTransform and the part which reordered companion classes
   and modules is now in Companions.

Note: Some tests were deisabled; should be re-enabled by Dmitry where needed.
Various cleanups and utility additions

- Some new functionality in tpd and in Symbols.
- Added `sm` interpolator to print nicely.
- Make use of nestedMap where possible.
- Add IdentityDenotTransformer as a convencience class
ExtensionMethods phase and TypeUtils

New phase for extension methods.

Also, split off some type handling functionality that can be used
elsewhere in new TypeUtils decorator. The idea is that TypeUtils should
contain methods on Type that make sense specifically for transformations.
That way, we can keep Types from growing. Might make sense to do similar
decorators for Denotations as well.

There's a  bug fix in MacroTransform: Need to treat selfInfo varDels specially, since they have no symbol.
Added infix methods for some tree constructions

Added several forms of "select" and "appliedTo" methods which construct Select, Apply, TypeApply
trees.

Motivation: Infix methods allow chaining which is more legible than deep nesting.
New micro phase: Literalize

Convert expressions with constant types to Literals.
New Flag: Inline

Added now because it affects purity if expressions: Inlined pure values
are pure even if referenced from impure prefixes (i.e. prefix need not
be evaluated).
Revised purity tests in TreeInfo

Added two levels: pure and idempotent and fixed what look like
obvious bugs. It seems the previous treatment confused the two
levels.

Changed EtaExpansion and Erasure to use Pure instead of Idempotent
where appropriate.
Fix bad type passed to indexOf.

This is a trap waiting to happen elsewhere as well. Not clear how to avoid it.
Move valueclass functionality into its own ValueClass module.