SI-5022 Retain precise existentials through pattern matching

From the dawn of scalac's existentials, the typer widens
existentials pt-s by substituting wildcard types in places
of existential quantifiers.

In this example:

    class ForSomeVsUnapply {
      def test {
        def makeWrap: Wrap = ???
        def useRep[e](rep: (e, X[e])) = ()

        val rep = makeWrap match {
          case Wrap(r) => r
        };

        useRep(rep) // error
      }
    }

the type of `r` is the result of typechecking:

    Apply(
     fun = TypeTree(
       tpe = (rep#12037: (e#12038, X#7041[e#12038]) forSome { type e#12038 })
     args = Bind(r @ _) :: Nil
    }

This descends to type the `Bind` with:

    pt = (e#12038, X#7041[e#12038]) forSome { type e#12038 }

`dropExistential` clobbers that type to `Tuple2#1540[?, X#7041[?]]`,
which doesn't express any relationship between the two instances
of the wildcard type. `typedIdent` sort of reverses this with a call
to `makeFullyDefined`, but only ends up with:

    pt = (Any#3330, X#7041[_1#12227]) forSome { type _1#12227; type e#12038 }

I suspect that this existential dropping only makes sense outside of
typechecking patterns. In pattern mode, type information flows from the
expected type onwards to the body of the case; we must not lose precision
in the types.

For SIP-18 friendly existentials, one `dropExistential` is invertable with
`makeFullyDefined`, so this hasn't been such a big problem.

The error message improvement conferred by SI-4515 took a hit.
That might be a good example to consider when reviewing this change:
Does it tell us anything interesting about this `dropExistential`
business?
SI-7479 Add avian option to partest's diff filter...

... so that the different results of the test on Avian
can be specified in the check file.
[backport] SI-7498 ParTrieMap.foreach no longer crashes

Previously, the `split` method of the `ParTrieMap` iterator threw
an exception when splitting a splitter that iterated over nodes
whose hash codes collide.
This was due to reusing the iterator of the list of colliding keys
rather than creating a new splitter.

This commit changes the `subdivide` method to create a new
iterator using the factory method of the current trie map
iterator rather than returning a `LinearSeqLike` iterator.
Merge pull request #2644 from retronym/ticket/7498-backport

[backport] SI-7498 ParTrieMap.foreach no longer crashes
Add Duration.toCoarsest method
SI-7479 Make test/files/run/tailcalls.scala pass on Avian

This commit modifies the test and check file to use the new diff filter.
Removed sbt build.

Difficult though it may be to accept, it must go. We couldn't keep it
working with active maintenance; after eight months of neglect there is
no chance. Nobody is working on it or using it. The code will remain in
the history if anyone wants it.

One of the most annoying experiences one can have when building a new
project is finding out one has been fiddling with an abandoned build
system which isn't even expected to work. Sometimes I check out a scala
project and there is a build.xml, a pom.xml, and a project directory.
We should not be among those who sow such build confusion.
Merge pull request #2652 from paulp/no-sbt-build

Removed sbt build.
Add support for JUnit tests

Add `test.junit` ant target that compiles and runs JUnit tests
found in `test/junit` directory.

Add `scala.tools.nsc.SampleTest` that demonstrates working
testing infrastructure.
Add Eclipse project for JUnit tests.
Merge remote-tracking branch 'scala-2.10.x/junit' into master
Move WeakHashSetTest to junit tests.

The WeakHashSetTest was written as unit test but put into partest's
`run` category as we were missing direct unit testing support.
That got fixed so moving the test now.
Merge pull request #2561 from soc/SI-7479

SI-7479 Make test/files/run/tailcalls.scala pass on Avian
Merge pull request #2602 from t3hnar/Duration.toCoarsest

Add Duration.toCoarsest method
Merge pull request #2657 from gkossakowski/junit-master

Merge JUnit support into master
Merge pull request #2631 from retronym/ticket/5022

SI-5022 Retain precise existentials through pattern matching