-Yshow-member-pos, print the positions of members.

Here for instance is a command line which leverages the
output of this option to print the method bodies of all
methods called 'transformInfo' found under src. Given
1500 source files it accomplishes this in four seconds,
thanks to -Ystop-after:parser.

% scalac -Yshow-member-pos sed -Ystop-after:parser \
    $(find src/compiler -name '*.scala') | \
    grep transformInfo | sed 's/ # .*//;' | \
    while read line; do echo "// $line" && gsed -n $line && echo; done

Or more simply, the start/end lines of each member of Random:

% scalac -Yshow-member-pos "" ./src/library/scala/util/Random.scala
./src/library/scala/util/Random.scala
20,134               class Random
 33                  def nextBoolean
 38                  def nextBytes
 43                  def nextDouble
 48                  def nextFloat
 54                  def nextGaussian
 59                  def nextInt
 65                  def nextInt
 70                  def nextLong
 81,89               def nextString
  82,86              def safeChar
   83                val surrogateStart
   84                val res
 94,98               def nextPrintableChar
 [snip]

It makes me sad I'm always in the position of having to hack
the compiler to do this sort of thing. All we need is something
like -Yinsert-phase:Foo where Foo is a class implementing a
(Phase, Tree) => Tree method, and the compiler runs all the
unit.bodies through it after each phase, and then one could
easily accomplish this in the privacy of one's own compiler.
SI-4365 nondeterministic failure in asSeenFrom

Under some order-dependent conditions (if source files arrive
in one order it happens, in the other order it does not) more
than one set of type parameters are created for a given class.
Previously this would lead to a crash in asSeenFrom when a type
parameter had to be matched up with a type application.

Now when that situation arises I compare them by name and log
a dev warning if it hits. This does not risk anything undesirable
happening because the wayward type parameter's owner is always
the right class; it's only the class type parameters which don't
include the wayward one. Since in a given type parameter list
names are unique, we have enough information to salvage the
search.
Fix unchecked warning.

Sorry, my schooling in warning suppression was deficient.
Taught -Xlint about @implicitNotFound.

And also about what a compiler identifier with a $ is likely
to look like. So it can stop burying me in warnings about missing
String interpolators which aren't so missing.
Eliminate a pile of -Xlint warnings.

Some unused private code, unused imports, and points where
an extra pair of parentheses is necessary for scalac to have
confidence in our intentions.
Eliminated the accumulated feature warnings.

No, this isn't busywork, how dare you suggest
such a thing. I intend my tombstone to say

           HERE LIES EXTEMPORE,
  WHO ELIMINATED A LOT OF SIP-18 WARNINGS
             REST IN PEACE
Added orElse to Type.

Tree and Symbol each have the analogous method, so consistency
calls along with utility for putting it on Type.
Added ensureFullyDefined.

Obvious fusion of "isFullyDefined" and "makeFullyDefined".
Simplify some checks in Refchecks.

Same result, simpler expression.
Minor overhaul of lub-producing typer methods.

There were a number of inefficiencies and unnecessary
indirections in these methods. I beat them into better shape.
Some highlights:

 - eliminated ptOrLub and similar. We must do something to
   suppress peoples' urge to tack a Boolean onto another method:
   these methods returned (Type, Boolean) and in addition to
   being horribly inefficient, it's vastly harder to follow the
   logic. Anything which can be written with a Boolean parameter
   or multi-value return can probably be written without the
   Boolean parameter and/or the multi-value return.

 - eliminated all the vars in the lub producing methods.
   Again, it's just a lot easier to understand code when I
   don't have to keep scanning up and down to see where and
   how previously declared names are being changed midstream.

 - added "sameWeakLubAsLub", which is the bit of information
   which was being tacked onto ptOrLub. This lets them all find
   out in advance whether the lub result implies further tree
   adaptation is necessary.
Updated jline and rebuilt.

Two years of atrophy. Now using sbt 0.12.3 and latest
versions of jansi, etc.
Merge branch 'master' into pr/warning-cleanup

Conflicts:
	src/compiler/scala/tools/nsc/typechecker/Contexts.scala
for null outer pointer, NPE via throw null

As per the JVM spec, the athrow instruction throws a NullPointerException upon finding null on stack top.
This commit takes advantage of that feature, to emit more compact code.

The constructor of an inner class that receives an outer value first checks that value for nullness, depending on which NPE may be thrown.
The code now emitted to achieve the above looks like:

    0: aload_1
    1: ifnonnull     6
    4: aconst_null
    5: athrow
    6: ...
avoids multiple evals of isSubClass DelayedInitClass
translation for DelayedInit keeps more code in original class

As before, the translation for DelayedInit creates a closure-class.
With this commit, its apply() method now just delegates to a synthetic method (in the original class) that contains the statements whose execution is to be delayed.

Previously the closure body would have the statements in question transplanted into it, so to say, which in turn required creating accessors in the original class, as well as reformulating accesses-on-this into accesses-via-outer.

Details about the mechanics of the rewriting can be found in the source comment for delayedEndpointDef()
Merge pull request #2437 from paulp/pr/warning-cleanup

Quieting down a bunch of warnings.
check added instruction to ASM MethodNode
Minor tweaks to appease reviewer.
Created utility function for dropping by-name-ness.

And applied it in three locations.
Merge remote-tracking branch 'paulp/pr/byname' into pr/patmat-name-based