SI-7292 Deprecate octal escape literals
SI-6899, prohibit dangerous, useless implicit conversions.

Increase eligibility requirements for implicit conversions,
such that T => U is ineligible if

  T <: Null    <or>   AnyRef <: U

This has the salutary effect of allowing us to ditch 16
ridiculous implicits from Predef, since they existed solely
to work around the absence of this restriction.

There was one tiny impact on actual source code (one line
in one file) shown here, necessitated because the literal null
is not eligible to be implicitly converted to A via <:<.

  def f[A](implicit ev: Null <:< A): A = null     // before
  def f[A](implicit ev: Null <:< A): A = ev(null) // after

As impositions go it's on the tame side.
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-7151 Emit final in bytecode for final inner classes.

As we did before a regression in 18efdedfb / SI-5676.

This commit tightens up the condition in which the FINAL
modifier is omitted; it now *only* does this for the module
classes of nested objects.
SI-7364 Allow raw types in parent position in Java sources

To make this work, this commit simply restricts parent
type argument inference to Scala source files.

The surrounding code has also been refactored to avoid a var.
[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
SI-7439 Avoid NPE in `isMonomorphicType` with stub symbols.

`originalInfo` can return null for stub symbols; deal with that
as we used to before a regression in 016bc3db.

After this change, we can once again delete A_1.class and still compile
code instantiating B_1. (A_1 is only referred to in a method signature
of B_1 which is not called from our code.)

	scala> new B_1
	warning: Class A_1 not found - continuing with a stub.
	res0: B_1 = B_1@5284b8f9

In practice, this situation arises when someone uses a third
party class that was compiled against other libraries not avaialable
on the current compilation classpath.
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 #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
Merge pull request #2635 from retronym/ticket/7151

SI-7151 Emit final in bytecode for final inner classes.
Merge pull request #2628 from retronym/ticket/7364

SI-7364 Allow raw types in parent position in Java sources
Merge pull request #2625 from paulp/pr/no-useless-implicits

SI-6899, prohibit dangerous, useless implicit conversions.
Remove dependency on xml in sys.process.

Added deprecated conversions in xml.Elem to preserve source compatibility.
Remove dependency on xml in ScalaRunTime.

runtime.ScalaRunTime.stringOf's behavior has changed slightly:
Call the object's `toString` for all classes in `scala.xml._`,
instead of only for `Node` and `MetaData` (old behavior).
Remove dependency on xml in plugin loading.