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-6240 Synchronizes Names

Previously we didn't have all possible name creation facilities covered
with locks, so some of them silently misbehaved and caused much grief:
http://groups.google.com/group/scala-internals/browse_thread/thread/ec1d3e2c4bcb000a.

This patch gets all the name factories under control.

Rather than relying on subclasses to override mutating methods
and add synchronization, they should instead override `synchronizeNames`
to return true and leave the placement of the locks up to
`reflect.internal.Names`.

These locks are placed around sections that mutate `typeHashtable`
and `termHashtable`.

This is done in the reflection universe, and in the interactive
compiler. The latter change will obviate an incomplete attempt
do to the same in `ScalaPresentationCompiler` in the scala-ide
project.
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
update typesafe.artifactory-online.com to private-repo
deprecate early type defs

This feature is neither properly supported by Scala compiler
nor a part of the language spec and therefore should be removed.
Due to source compatiblity with 2.10 we need to deprecate it first.
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
Merge pull request #2861 from densh/topic/deprecate-early-type-defs

Deprecate early type defs