Test for reading JDK 8 (classfile format 52) class files.

This commit includes a test for reading JDK 8 (classfile format 52)
class files, in particular default (aka defender) methods. It uses ASM
to generate an interface with default methods then exercises that
interface from Scala.

Surprisingly no changes are necessary to the Scala code base to support
reading format 52 class files.

Because the test can only run under JDK 8, the JDK version is checked
and the expected output is synthesized for previous versions.
SI-6841 Fix bug at the intersection of DelayedInit and named args

The DelayedInit transformation analyses the constructor to partition
regular initialization from calls to super constructors / trait
initializers.

It failed to find such super calls if they were nested in a Block,
which can happens when using named or default arguments.

This commit makes that code peer into Blocks to correctly partition
the constructor statements.

This change doesn't affect the result of run/t4680.scala, which was
mentioned in nearby comments and which chronicles bugs with DelayedInit
when used in inheritance hierarchies.
Refactor testing logic for only running under certain JDK versions

We had several tests designed to only run if the JDK version was at
least some specified version. This commit refactors that common logic
into DirectTest.
SI-7556 Fix runtime reflection involving ScalaLongSignature

Scala type information is stored in classfiles in encoded in a String
in the ScalaSignature annotation. When it is too big for a single
String, it is split into an array of Strings in a different annotation,
ScalaLongSignature.

The enclosed test, with a class containing 3000 methods, uses the latter.
It exposes a bug in the way runtime reflection decodes that data.

It must concatentate and *then* decode, rather that the other way around.
SI-7264 Initialize owner when searching for companion.

From ClassSymbol:

    protected final def companionModule0: Symbol =
      flatOwnerInfo.decl(name.toTermName).suchThat(sym => sym.isModuleNotMethod && (sym isCoDefinedWith this))

    protected final def flatOwnerInfo: Type = {
      if (needsFlatClasses)
        info
      owner.rawInfo
    }

Note the call to `rawInfo`; in the enclosed test case, that gives
us back an uninitialized type for the module class of `Foo`, and
consequently we don't find the companion for `Foo.Values`.

This commit forces the initialization of the owning symbol if it
was compiled in a prior run.

In addition, it adds a special case to `Run#compiles` for early
initialized symbols, which start out in life with the wrong owner.
As best as I can see, that complexity stems from allowing early
initialized members *without* return types to be used as value arguments
to the super call, which in turn is needed to infer parent type arguments.
The situation is described a little further in existing comments of
`typedPrimaryConstrBody`.

This bug is essentially another case of SI-6976. See the comments in pull
request of that patch (https://github.com/scala/scala/pull/1910) for
commit archaeology that shows why we're reluctant to force the owner
info more broadly than is done in this commit.
SI-7558 Fix capture of free local vars in toolbox compiler

It was creating an `ObjectRef[<notype>]` because of a small
bug in `capturedVariableType`.
Merge pull request #2626 from retronym/ticket/7556

SI-7556 Fix runtime reflection involving ScalaLongSignature
SI-6811 Remove scala.annotation.cloneable
Merge pull request #2629 from retronym/ticket/7558

SI-7558 Fix capture of free local vars in toolbox compiler
Merge pull request #2611 from retronym/ticket/6481

SI-6841 Fix bug at the intersection of DelayedInit and named args
SI-7505 Test case for pattern matcher + type alias bug

Progressed along with SI-7214 in acd74cae09.
Merge pull request #2606 from JamesIry/2.10.x_classfile_52

Test for reading JDK 8 (classfile format 52) class files.
Merge pull request #2616 from retronym/ticket/7505

SI-7505 Test case for pattern matcher + type alias bug
SI-6747 Deprecate Range#{numRange,last,terminal}Element{s,}

There are already better replacements which expose less surprising behaviour.
Merge pull request #2621 from retronym/ticket/7264

SI-7264 Initialize owner when searching for companion.
Merge branch '2.10.x' into topic/merge-v2.10.2-RC1-35-ga54d86b-to-master

Conflicts:
	src/partest/scala/tools/partest/DirectTest.scala
Merge pull request #2647 from retronym/topic/merge-v2.10.2-RC1-35-ga54d86b-to-master

merge 2.10.x to master
Merge pull request #2645 from soc/SI-6747

SI-6747 Deprecate Range#{numRange,last,terminal}Element{s,}
Merge pull request #2641 from soc/SI-6811-cloneable-definition

SI-6811 Remove scala.annotation.cloneable