Rewrite TailCalls for performance and immutability.

While logging symbols created after typer, I discovered that
TailCalls was far and away the largest creator. It turns out
this was due to a bug where thousands of labels were eagerly
created during tail call analysis, even if the method weren't
tail recursive and no label would ever be required.

This commit shaves 10% off the total number of method symbol
creations (compiling quick.lib drops from 88K to 80K.)
-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.
AbstractFile.getDirectory does not return null when outDir is "."
Updated jline and rebuilt.

Two years of atrophy. Now using sbt 0.12.3 and latest
versions of jansi, etc.
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()
Created utility function for dropping by-name-ness.

And applied it in three locations.
SI-7403 Stream extends Serializable

Additionally, add @deprecatedInheritance to warn creators of
custom subclasses that the class will be sealed in the future.
SI-7421 remove unneeded extra-attachement in maven deploy
improved naming of variables in constructors phase
static methods may have local variables too, some day
removing remnants from the GenJVM era
another GenJVM remnant that goes away
role played by magic constant in ScalaSigBytes
SI-7422 GenASM populates and clears its maps within a Run
SI-7291: No exception throwing for diverging implicit expansion

Since we don't throw exceptions for normal errors it was a bit odd
that we don't do that for DivergingImplicit.
As SI-7291 shows, the logic behind catching/throwing exception
was broken for divergence. Instead of patching it, I rewrote
the mechanism so that we now another SearchFailure type related
to diverging expansion, similar to ambiguous implicit scenario.
The logic to prevent diverging expansion from stopping the search
had to be slightly adapted but works as usual.

The upside is that we don't have to catch diverging implicit
for example in the presentation compiler which was again showing
that something was utterly broken with the exception approach.
SI-7291: Remove error kinds.

What seemed like a good idea initially (since potentially there were
many different kinds of errors that could be treated specially),
started to complicate the error logic.
So let's just match on the specific instance of an error to
manipulate the buffer.
Merge pull request #2442 from soc/SI-7403

SI-7403 Stream extends Serializable
Merge pull request #2450 from huitseeker/issue/SI-7421

SI-7421 remove unneeded extra-attachement in maven deploy