Wider net on final fields.

This should exclude everything mutable.  I'm open to suggestions
as to what sort of final fields we can safely allow beyond these,
if any.
Merge branch 'master' into GenASM
Merge branch 'master' into GenASM
rather than info.parents, superClass and mixinClasses are enough
cleaned up inferConstructorInstance; same behavior
SI-5189 1/2: inferConstrInst uses correct variance

fixed concurrent.impl.Promise by making FState invariant
(it would be unsound to make it covariant)
SI-5189 fixed: safe type infer for constr pattern

several fixes to the standard library due to
 - the safer type checker this fix gives us (thus, some casts had to be inserted)
 - SI-5548
 - type inference gets a bit more complicated, it needs help (chainl1 in combinator.Parsers)

To deal with the type slack between actual (run-time) types and statically known
types, for each abstract type T, reflect its variance as a skolem that is
upper-bounded by T (covariant position), or lower-bounded by T (contravariant).

Consider the following example:

 class AbsWrapperCov[+A]
 case class Wrapper[B](x: Wrapped[B]) extends AbsWrapperCov[B]

 def unwrap[T](x: AbsWrapperCov[T]): Wrapped[T] = x match {
   case Wrapper(wrapped) =>
     // Wrapper's type parameter must not be assumed to be equal to T,
     // it's *upper-bounded* by it
     wrapped // : Wrapped[_ <: T]
 }

this  method should  type check  if and  only if  Wrapped is  covariant in  its type
parameter

before inferring Wrapper's type parameter B from x's type AbsWrapperCov[T], we must
take into account that x's actual type is:
AbsWrapperCov[Tactual] forSome {type Tactual <: T}
since AbsWrapperCov is covariant in A -- in other words, we must not assume we know
T exactly, all we know is its upper bound

since method application is the only way to generate this slack between run-time and
compile-time types (TODO: right!?), we can simply replace skolems that represent
method type parameters as seen from the method's body by other skolems that are
(upper/lower)-bounded by that type-parameter skolem (depending on the variance
position of the skolem in the statically assumed type of the scrutinee, pt)

this type slack is introduced by adaptConstrPattern: before it calls
inferConstructorInstance, it creates a new context that holds the new existential
skolems

the context created by adaptConstrPattern must not be a CaseDef, since that
confuses instantiateTypeVar and the whole pushTypeBounds/restoreTypeBounds dance
(CaseDef contexts remember the bounds of the type params that we clobbered
during GADT typing)

typedCase deskolemizes the existential skolems back to the method skolems,
since they don't serve any further purpose (except confusing the old pattern
matcher)

typedCase is now better at finding that context (using nextEnclosing)
shortening Name-String-Name-String conversions to just Name-String
Add symbol to Manifests.

Phantom types were vanishing during the erasure which takes
place from manifest -> class object -> tpe.
Updated flow for creating new STARRs.

* SHA1's are deleted when creating new STARR builds.
* SHA1's are also deleted if new fjbg/forkjoin/jline jars are made.
* Normal push/pull flow should continue as normal with less frustration.
Fix for tailcall transform/recognition bugs.

Closes SI-3275, SI-5455.
Merge remote-tracking branches 'adriaanm/ticket/5189' and 'jsuereth/better-starr-flow' into develop
Merge branch 'master', remote-tracking branch 'magarciaEPFL/GenASM' into develop
Removed "Todo: test" where a test exists.

- Renamed t960 to a more sensible name, because SI-960 is not related
  to the test and I couldn't find a ticket number.
- Some minor fixes to @deprecated like switched or missing versions.
Merge branch 'master' into feature/pc-execution-contexts
Fix tasksupport field initialization for the checkInit build.
Merge remote-tracking branches 'soc/fix-todos' and 'axel22/feature/pc-execution-contexts' into develop
Merge branch 'master' into merge-inline

Conflicts:
	lib/scala-compiler.jar.desired.sha1
	lib/scala-library-src.jar.desired.sha1
	lib/scala-library.jar.desired.sha1
	src/compiler/scala/reflect/internal/Definitions.scala
	src/compiler/scala/reflect/internal/Importers.scala
	src/compiler/scala/reflect/internal/Symbols.scala
	src/compiler/scala/reflect/internal/Trees.scala
	src/compiler/scala/reflect/internal/Types.scala
	src/compiler/scala/tools/nsc/Global.scala
	src/compiler/scala/tools/nsc/transform/Erasure.scala
	src/compiler/scala/tools/nsc/transform/LiftCode.scala
	src/compiler/scala/tools/nsc/transform/UnCurry.scala
	src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
	src/compiler/scala/tools/nsc/typechecker/Typers.scala
	test/files/run/programmatic-main.check
	test/files/speclib/instrumented.jar.desired.sha1
New starr to support new fundamental laws of reality.

And grueling recovery from branch drift.

Merges a portion (and only a portion) of topic/inline into master.
The major changes which come with this merge are:

  AnyVal is unsealed, can be extended directly.
  ScalaObject is no longer with us.
Cleaning up stray ScalaObject references.