Warn on selection of vals from DelayedInit subclasses.

Which are likely to yield null, if the program didn't start.

This is a common source of confusion for people new to
the language, as was seen during the Coursera course.

The test case shows that the usage pattern within Specs2
won't generate these warnings.
SI-7369 Avoid spurious unreachable warnings in patterns

Unreachability analysis draws on the enumerated domain of types
(e.g sealed subclasses + null, or true/false), and also looks at all
stable identifier patterns tested for equality against the same 'slot'
in a pattern.

It was drawing the wrong conclusions about stable identifier patterns.
Unlike the domain constants, two such values may hold the same value,
so we can't assume that matching X precludes matching Y in the same
slot in a subsequent case.

For example:

    val X: Boolean = true; val Y: Boolean = true
    def m1(t1: Tuple1[Boolean]) = t1 match {
      case Tuple1(true) =>
      case Tuple1(false) =>
      case Tuple1(false) => // correctly unreachable
    }
    def m2(t1: Tuple1[Boolean]) = t1 match {
      case Tuple1(X) =>
      case Tuple1(Y) => // spurious unreachable warning
    }

    //
    // Before
    //
    reachability, vars:
    V2: Boolean ::= true | false// Set(false, Y, X, true) // = x1._1
    V1: (Boolean,) ::= null | ... // = x1
    equality axioms:
      V2=true#4  \/ V2=false#5  /\
     -V2=false#5 \/  -V2=Y#3    /\
     -V2=false#5 \/  -V2=X#2    /\
     -V2=false#5 \/ -V2=true#4  /\
       -V2=Y#3   \/  -V2=X#2    /\
       -V2=Y#3   \/ -V2=true#4  /\
       -V2=X#2   \/ -V2=true#4

    //
    // After
    //
    reachability, vars:
    V2: Boolean ::= true | false// Set(false, Y, X, true) // = x1._1
    V1: (Boolean,) ::= null | ... // = x1
    equality axioms:
      V2=true#4  \/ V2=false#5  /\
     -V2=false#5 \/ -V2=true#4
SI-6771 Alias awareness for checkableType in match analysis.

Failure to dealias the type of the scrutinee led the pattern
matcher to incorrectly reason about the type test in:

   type Id[X] = X; (null: Id[Option[Int]]) match { case Some(_) => }

Before, `checkableType` returned `Id[?]`, now it returns `Some[?]`.
SI-7367 scaladoc crash on constructing the model for annotations.

Scaladoc only checks primary constructor when building annotation
model.

Here we instead find the constructor matching the annotation's symbol.
Also change TreeFactory.makeTree to return TreeEntity rather than
Option[TreeEntity] and force the caller check for EmptyTree.
Merge pull request #2392 from vigdorchik/ticket/si-7367

SI-7367 scaladoc crash on constructing the model for annotations.
Merge pull request #2439 from retronym/ticket/7369

SI-7369 Avoid spurious unreachable warnings in patterns
SI-6532 emit debug info in compiled java.

Our handful of java source files weren't being compiled
with line numbers, sourcefile, and other debugger aids.
I don't really know how to test this so I'll enclose an
excerpt of the bytecode diff of scala.runtime.IntRef to show
that this change results in debug information.

  2,3c2,4
  >   Compiled from "IntRef.java"
  4a6
  >   SourceFile: "IntRef.java"
  53a62,67
  >       LineNumberTable:
  >         line 18: 0
  >       LocalVariableTable:
  >         Start  Length  Slot  Name   Signature
  >                0      10     0  this   Lscala/runtime/IntRef;
  >                0      10     1  elem   I
  62a77,81
  >       LineNumberTable:
  >         line 19: 0
  >       LocalVariableTable:
  >         Start  Length  Slot  Name   Signature
  >                0       8     0  this   Lscala/runtime/IntRef;
Merge pull request #2432 from retronym/ticket/delayed-init-ref

Warn on selection of vals from DelayedInit subclasses.
Merge pull request #2471 from paulp/pr/2.10.2/6532

SI-6532 emit debug info in compiled java.
use relative symlink in distpack

To simplify building a release on jenkins, we run distpack-opt in one job,
store the `dists/` directory in a tar ball, archive that artifact and
copy it to the downstream jobs that package on windows and unix.

To make the tarball portable between machines, it must not use absolute symlinks.
Merge pull request #2475 from adriaanm/build-relative-symlink

use relative symlink in distpack
Merge pull request #2440 from retronym/ticket/6771

SI-6771 Alias awareness for checkableType in match analysis.