Fix #167

Can handle now vararg arguments in patterns.
Make changeOwner more robust regarding non-standard owner chains

The problem is running changeOwner(from, to) where

 - from is a ValDef or a Label
 - an embedded definition has as owner not `from` but some
   owner of `from`.

We allow such denomrlaized owners and the pattern matcher generates
them. This patch makes changeOwner take these situations into account.
Make rejection of deep subtype call stack optional

Move flag that throws exception on deep subtyping stacks from Config varianble to setting.
Disable setting for core-pickling which had a deep subtype failure after pattern matcher
was integrated. Todo: Figure out why the subtype stack got so deep.
Make productArity a synthetic method which can be overridden

Like other synthetic methods, productArity will not be generated
if an explicit definition is given. Used to be generated unconditionally
in desugaring.
Make SubstOnlyTreeMaker maintain type-safety.

Implementation of pattern
sel match {
 x => <body>
}
used to replace references to x by references to sel in <body>.
This is not type correct and it also requires additional traversal of
body.
Now SubstOnlyTreeMaker generates a `x = sel` statement.
More better handling of typeTests in patmat.

Now reuse symbols from typer. Less substitutions -> better performance.
Bring back test removed between merges.
Porting lazy vals to a new scheme.
Setters are not case accessors
Fixing owner releated error in lazy vals.

When lazy val body is moved to a init method the owner of symbols in
tree should change
Enabling lazy vals.

Unit tests still to-be-fixed
Enable all tests
Fixed assertion to enfornce idempotency of substitutions
Fixed needs outer test
Make LazyVals an IdentityDenotTransformer
Move check for casting a primitive to a non-primitive type from erasure to refchecks
Remove outdated tests.

dotc_core_transform directory is empty. Files where moved while restructuring erasure.
Enable outer tests in pattern matcher.

And a test for this.
Make Extension methods a miniphase
Join megaphases. Saves 80 out of 200 seconds for dotc.tests