SI-7410 REPL uses improved tools.jar locator

The logic in partest for snooping around for tools.jar
is moved to PathResolver, and ILoop uses it from there.

If JAVA_HOME is toolless, check out java.home.

The use case was that Ubuntu installs with `java` at
version 6 and `javac` at version 7; it's easy to wind
up with JAVA_HOME pointing at the version 6 JRE, as
I discovered.  It's confusing when that happens.

In future, partest might run under 7 and fork tests
under 6, but those permutations are downstream.
PathResolver uses platform EOL to mkStrings
Avoid caching different types in TypeSymbol.

Try to prevent TypeSymbols from caching a different typeref
for tpe_* and typeConstructor if the symbol is monomorphic.
I find this undesirable:

  scala> AnyRefClass.tpe eq AnyRefClass.typeConstructor
  res0: Boolean = true

  scala> AnyRefClass.tpe eq AnyRefClass.typeConstructor
  res1: Boolean = false
Concision contribution.

We have lots of core classes for which we need not go through
the symbol to get the type:

  ObjectClass.tpe -> ObjectTpe
  AnyClass.tpe    -> AnyTpe

I updated everything to use the concise/direct version,
and eliminated a bunch of noise where places were calling
typeConstructor, erasedTypeRef, and other different-seeming methods
only to always wind up with the same type they would have received
from sym.tpe. There's only one Object type, before or after erasure,
with or without type arguments.

Calls to typeConstructor were especially damaging because (see
previous commit) it had a tendency to cache a different type than
the type one would find via other means. The two types would
compare =:=, but possibly not == and definitely not eq. (I still
don't understand what == is expected to do with types.)
A couple additional simplifications.

As noted by reviewer.
SI-7469 Remove deprecated elements in Java{Conversions,Converters}
SI-7003 Partest redirects stderr to log file

Some scalac output is on stderr, and it's useful to see that
in the log file, especially for debugging.

Adds a line filter for logs, specified as "filter: pattern"
in the test source.

Backslashes are made forward only when detected as paths.

Test alignments:

Deprecations which do not pertain to the system under test
are corrected in the obvious way.

When testing deprecated API, suppress warnings by deprecating
the Test object.

Check files are updated with useful true warnings, instead of
running under -nowarn.

Language feature imports as required, instead of running under -language.

Language feature not required, such as casual use of postfix.

Heed useful warning.

Ignore broken warnings. (Rarely, -nowarn.)

Inliner warnings pop up under -optimise only, so for now, just
filter them out where they occur.

Debug output from the test required an update.
SI-7198 Par-Test uses filters files

Partest will also read files/filters and files/kind/filters for
filter expressions (one per line, trimmed, leading #comments)
which are taken as regexes.

A test/files/filters is provided which attempts to quell HotSpot
warnings; the test for this commit requires it.

The elided lines can be revealed using the lemon juice of verbosity:

apm@mara:~/projects/snytt/test$ ./partest --verbose --show-diff files/run/t7198.scala
[snip]
>>>>> Transcripts from failed tests >>>>>

> partest files/run/t7198.scala
% scalac t7198.scala
[snip]
% filtering t7198-run.log
--Over the moon
--Java HotSpot(TM) 64-Bit Server VM warning: Failed to reserve shared memory (errno = 28).

The filtering operation is part of the transcript, which is printed on failure.

No attempt is made to be clever about not slurping the filters file a thousand times.

Previous literal patterns had to be updated because there's parens in them thar strings.

Future feature: pattern aliases, define once globally and invoke in test filters.
Merge pull request #2585 from paulp/pr/concision-contribution

Concision contribution.
Merge pull request #2594 from adriaanm/ticket-7287

SI-7287 include all compiler sources in -src.jar
Merge pull request #2591 from som-snytt/topic/partest-inches

SI-7003 Partest redirects stderr to log file
Merge pull request #2584 from som-snytt/issue/repl-tools-jar

SI-7410 REPL uses improved tools.jar locator
Print raw types correctly.

The "For convenience, these are usable as stub implementations"
bit has generated surprisingly few angry letters, but I noticed
today it blows it on raw types. Or, used to blow it.

  /** As seen from class Sub, the missing signatures are as follows.
   *  For convenience, these are usable as stub implementations.
   *  (First one before this commitw as 'def raw(x$1: M_1)'
   */

  def raw(x$1: M_1[_ <: String]): Unit = ???
  def raw(x$1: Any): Unit = ???
Merge pull request #2524 from soc/SI-7469-java-collections

SI-7469 Remove deprecated elements in Java{Conversions,Converters}
Merge pull request #2598 from paulp/pr/raw-type-stubs

Print raw types correctly.
Make all numeric coercions explicit.

Optimistically, this is preparation for a day when we don't
let numeric types drift with the winds. Even without the optimism
it's a good idea. It flushed out an undocumented change in
the math package object relative to the methods being forwarded (a
type is widened from what is returned in java) so I documented
the intentionality of it.

Managing type coercions manually is a bit tedious, no doubt,
but it's not tedious enough to warrant abandoning type safety
just because java did it.
Merge pull request #2593 from paulp/pr/no-numeric-widen

Make all numeric coercions explicit.
an ICode InvokeStyle can now answer whether it isSuper
new bytecode emitter, GenBCode, for now under a flag

GenBCode is a drop-in replacement for GenASM with several advantages:

  - faster: ICode isn't necessary anymore.
    Instead, the ASTs delivered by CleanUp (an expression language)
    are translated directly into a stack-language (ASM Tree nodes)

  - future-proofing for Java 8 (MethodHandles, invokedynamic).

  - documentation included, shared mutable state kept to a minimum,
    all contributing to making GenBCode more maintainable
    than its counterpart (its counterpart being GenICode + GenASM).

A few tests are modified in this commit, for reasons given below.

(1) files/neg/case-collision

    Just like GenASM, GenBCode also detects output classfiles
    differing only in case. However the error message differs
    from that of GenASM (collisions may be show in different order).
    Thus the original test now has a flags file containing -neo:GenASM
    and a new test (files/neg/case-collision2) has been added
    for GenBCode. The .check files in each case show expected output.

(2) files/pos/t5031_3

    Currently the test above doesn't work with GenBCode
    (try with -neo:GenBCode in the flags file)
    The root cause lies in the fix to
    https://issues.scala-lang.org/browse/SI-5031
    which weakened an assertion in GenASM
    (GenBCode keeps the original assertion).
    Actually that ticket mentions the fix is a "workaround"

(3) files/run/t7008-scala-defined

    This test also passes only under GenASM and not GenBCode,
    thus the flags file. GenASM turns a bling eye to:

      An AbstractTypeSymbol (SI-7122) has reached the bytecode emitter,
      for which no JVM-level internal name can be found:
      ScalaClassWithCheckedExceptions_1.E1

    The error message above (shown by GenBCode) highlights
    there's no ScalaClassWithCheckedExceptions_1.E1 class,
    thus shouldn't show up in the emitted bytecode
    (GenASM emits bytecode that mentions the inexistent class).
two bytecode tests atune with bytecode by GenASM