SI-7501 Pickler: owner adjustment for param syms in annotation args

Pickling of trees within annotation arguments led to an unfortunate
situation: the MethodType of a symbol contained a value parameter
symbol that was pickled as though it were owned by the enclosing
class (the root symbol of the pickle.)

Under separate compilation, this would appear as a member of that
class.

Anyone using `@deprecatedName('oldName)` was exposed to this problem,
as the argument expands to `Symbol.apply("oldName")`.

This commit extends some similar treatment of local type parameters
to also consider value parameters.
SI-7407 fixed in GenBCode but beware, it remains a bug in GenASM

GenBCode runs only under a flag, and moreover only if -optimise
is not present (see ScalaSettings for details).

Therefore during a nightly, when tests are run under -optimise,
we need -Ynooptimise to deactivate the optimizer.
With that, GenBCode can run and tackle the test case successfuly.
GenBCode: decouple ClassNode building from classfile writing

This commit and two follow-up commits (recognizable because
of the starting words "decouple this from that" in the commit message)
are baby steps towards pipelining of class building and class writing,
ie allowing class building (which requires typer) and "the rest"
which doesn't) to run in parallel.

The commits have been broken up following a previous review comment.
GenBCode: decouple ClassNode building from encoding as byte array

To recap from the previous commit, another baby step towards
pipelining of class building and class writing.

Implementing similar functionality in GenASM is up for grabs,
see https://issues.scala-lang.org/browse/SI-6164
GenBCode: decouple ClassDef traversing from ClassNode building

In keeping with the baby steps towards pipelining of
class building and class writing, this commit gets one step closer
to that. Only thing missing: the actual thread-pool.
That will be the focus of an upcoming commit.
SI-7785 Preserve TypeVar suspension through TypeMaps

During `findMember`, TypeVars in `this` are placed into suspended
animation. This is to avoid running into recursive types when
matching members to those in base classes.

However, the mechanism used to do this is superficial, and doesn't
work when TypeVars are copied by TypeMaps. This seems to crop up
when using `AppliedTypeVar` with higher-kinded type vars.

In the enclosed test case, the cyclic type led to a SOE in
CommonOwnerMap.

This commit allows a TypeVar to delegate its `suspended` attribute
to the TypeVar from which it was copied. This is done in
`TypeVar#applyArgs`, which is called by:

    // TypeMap#mapOver
    case tv@TypeVar(_, constr) =>
      if (constr.instValid) this(constr.inst)
      else tv.applyArgs(mapOverArgs(tv.typeArgs, tv.params))

We should review the other places this is called to make sure
that it make sense to link in this way:

    Types#appliedType
    TypeVar#normalize
Echo the location of JUnit test failure reports in `ant test.junit`.

For other dummies like me hammering out "My First Scalac JUnit Test."
A better diagnostic error for corrupt or missing JARs.

Augment the IOException with the name of the file we're trying
to open.

Motivated by a troubleshooting session with partial downloads
of JARs from Maven central breaking the Scala build on Martin's
laptop.

The test case only tests our part of the error message, so as not
to be platform / JDK specific. Otherwise, it would check that the
correct cause exception was present and accounted for.
Merge pull request #2883 from retronym/topic/junit-zip-archive

A better diagnostic error for corrupt or missing JARs.
Merge pull request #2863 from magarciaEPFL/backendish40

(1 of 2) of the rest of the new bytecode emitter + feedback
Merge pull request #2847 from retronym/ticket/7501

SI-7501 Pickler: owner adjustment for param syms in annotation args
SI-7763 Avoid dropping casts in erasure

466b7d29f avoided quadratic complexity in Erasure's treatment
of chained `asInstanceOf` calls. It did so by using the typechecked
qualifier, rather than discarding it.

However, that also dropped the cast altogether! In many cases this
was masked by later inclusion of a cast to the expected type
by `adaptToType`:

	  at scala.tools.nsc.transform.Erasure$Eraser.cast(Erasure.scala:636)
	  at scala.tools.nsc.transform.Erasure$Eraser.scala$tools$nsc$transform$Erasure$Eraser$$adaptToType(Erasure.scala:665)
	  at scala.tools.nsc.transform.Erasure$Eraser.adapt(Erasure.scala:766)
	  at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5352)

This commit re-wraps the typechecked `qual` in its original
`<qual>.asInstanceOf[T]` to preserve semantics while avoiding
the big-O blowup.

The test includes the compiler option `-Ynooptimize` because dead code
elimination *also* thinks that this cast is superfluous. I'll follow up
on that problem seprately.
SI-7763 Don't eliminate CHECK_CAST in dead code elimination.

Even if the result isn't used, the potential ClassCastException
is observable, so we must retain them.
Merge pull request #2879 from retronym/ticket/7785

SI-7785 Preserve TypeVar suspension through TypeMaps
Merge pull request #2849 from retronym/ticket/7763

SI-7763 Avoid dropping casts in erasure
Merge remote-tracking branch 'scala/2.10.x'

After the merge, the test/run/t7733 started to fail on Jenkins.
I tried to reproduce it locally but I couldn't so I think it's
system dependent failure. Per @retronym's suggestion I moved it to pending
to not block the whole merge.

Conflicts:
	bincompat-backward.whitelist.conf
	bincompat-forward.whitelist.conf
	src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
	src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala
	src/compiler/scala/tools/nsc/typechecker/Macros.scala
	src/compiler/scala/tools/nsc/typechecker/Namers.scala
	src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
	src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
	src/compiler/scala/tools/nsc/util/MsilClassPath.scala
	src/compiler/scala/tools/reflect/ToolBoxFactory.scala
	src/reflect/scala/reflect/internal/ClassfileConstants.scala
	src/reflect/scala/reflect/internal/Importers.scala
	src/reflect/scala/reflect/internal/Trees.scala
	src/reflect/scala/reflect/runtime/JavaMirrors.scala
	test/files/run/macro-duplicate/Impls_Macros_1.scala
	test/files/run/t6392b.check
	test/files/run/t7331c.check
Paring back the scope of our shared .gitignore

Importantly, limit the exclusion of build.properties
to the file in the root directory, paving the way for
the return of an SBT build.

  - Unignores .bak, .jar, and ~
  - limit ignorance of qbin to the root directory

.log files, generated by partest, are still ignored.

To see ignored files in your workspace, try:

    git ls-files --others --ignored --exclude-standard -- test | grep log
    git status --ignored -- test
Merge pull request #2886 from gkossakowski/merge-2.10.x

Merge 2.10.x into master
Merge pull request #2890 from retronym/topic/one-mans-bliss

Paring back the scope of our shared .gitignore
typo