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.
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.
Remove dependency on xml in MarkupParsers

Inlined TextBuffer.
Remove dependency on xml in ast.parser

Copied the following files from scala.xml to ast.parser.xml:
  - MarkupParsers differs from scala.xml.MarkupParsers only in the first 17 lines
  - Utility.scala was refactored and reduced (also includes TokenTests)
Set scene for Predef.$scope's demise.

When there's no Predef.$scope but xml is being used,
the compiler aliases scala.xml.TopScope to $scope.

There must be a scala.xml package when xml literals were parsed.

For compatibility with the old library, which relied on $scope being in scope,
synthesize a `import scala.xml.{TopScope => $scope}` when xml is needed,
but there's no Predef.$scope and the old library is detected (scala.xml.TopScope exists).
SI-7433 Fix spurious warning about catching control throwable

In the same vein as SI-6994, we have to be careful not to warn
about synthetic code. In that case, the spurious warnings came
because we warned in the typechecker, which was also called in
erasure. In this case, we are issuing the warning in Uncurry,
so we must be mindful of the pattern matchers translations of
non-trivial catch patterns, which look like:

    case (ex8 @ _) => {
    <synthetic> val x5: Throwable = ex8;
    case11(){
      if ({
        case14(){
          if (x5.$isInstanceOf[NullPointerException]())
            matchEnd13(true)
          else
            case15()
        };
        case15(){
          if (x5.$isInstanceOf[RuntimeException]())
            matchEnd13(true)
          else
            case16()
        };
        case16(){
          matchEnd13(false)
        };
        matchEnd13(x: Boolean){
          x
        }
      })

This commit detects that `ex8` is synthetic and disables the warning.
Merge pull request #2637 from retronym/ticket/7439

SI-7439 Avoid NPE in `isMonomorphicType` with stub symbols. …
Merge pull request #2653 from retronym/ticket/7433

SI-7433 Fix spurious warning about catching control throwable
SI-7569 Fix end position in PostfixSelect tree

introduced in 5b54681: the end position of Postfix operators should
take the operator length into account.

review by @som-snytt
Merge pull request #2671 from huitseeker/issue/SI-7569

SI-7569 Fix end position in PostfixSelect tree
Merge pull request #2667 from adriaanm/modularize-xml

Spin off xml library as scala-library-xml.
SI-7590 TreeSet should fail fast if Ordering is null

While migrating scala.tools.nsc.util.TreeSet to
scala.collection.mutable.TreeSet, I messed up initialization order
and realized that TreeSet accepts null as an Ordering and only fails
much later.

This change makes mutable.TreeSet and immutable.TreeSet fail
immediately.