Move a test from pos to run to highlight bytecode deficiencies.

We'll address them in subsequent commits.
SI-6666 Account for nesting in setting INCONSTRUCTOR

This flag is calcualed in Namers, and assigned to class
and module class symbols that are defined in self/super-calls,
and in early definitions.

For example, class D is INCONSTRUCTOR in each case below:

    class C extends Super({class D; ()})
    class C(a: Any) {
      def this(a: Any) = this({class D; ()})
    }
    new { val x = { class D; () } with Super(())

But, the calculation of this flag failed to account for
nesting, so it was not set in cases like:

    class C(a: Any) {
      def this(a: Any) = this({val x = {class D; ()}; x})
    }

This patch searches the enclosing context chain, rather than
just the immediate context. The search is terminated at the
first non term-owned context. In the following example, this
avoids marking `E` as INCONSTRUCTOR; only `D` should be.

    class C extends Super({class D { class E }; ()})

This closes SI-6259 and SI-6506, and fixes one problem
in the recently reopened SI-6957.
Add a test case from the comments of SI-6666.

This one lands in the new implementation restriction
which beats the VerifyError.
Broader checks for poisonous this references.

Replaces more VerifyErrors with implementation restrictions.
SI-6666 Catch VerifyErrors in the making in early defs.

As we did for self/super calls, add a backstop into
explicitouter and lambdalift to check when we try to
get an outer pointer to an under-construction instance.
Class symbols can't be contravariant.

During development of the fix for SI-6666, I encountered:

    % test/files/pos/t4842.scala
    test/files/pos/t4842.scala:10: error: contravariant class Bar occurs in covariant position in type ()this.Bar of constructor Bar
         this(new { class Bar { println(Bar.this); new { println(Bar.this) } }; new Bar } ) // okay

I had incorrectly set the INCONSTRUCTOR flag on the class symbol
`Bar`. (It isn't directly in the self constructor call, as it
is nested an intervening anonymous class.)

But, this flag shares a slot with CONTRAVARIANT, and the variance
validation intepreted it as such.

ClassSymbol already has this code to resolve the ambiguous
flags for display purposes:

    override def resolveOverloadedFlag(flag: Long) = flag match {
      case INCONSTRUCTOR => "<inconstructor>" // INCONSTRUCTOR / CONTRAVARIANT / LABEL
      case EXISTENTIAL   => "<existential>"   // EXISTENTIAL / MIXEDIN
      case IMPLCLASS     => "<implclass>"     // IMPLCLASS / PRESUPER
      case _             => super.resolveOverloadedFlag(flag)
    }

This commit overrides `isContravariant` to reflect the same logic.
[backport] SI-6478 Fixing JavaTokenParser ident

Backport of 256934160007079f473131469af2df4d023c2cfc from PR
https://github.com/scala/scala/pull/1466
SI-7096 SubstSymMap copies trees before modifying their symbols

I removed some strange code in a06d31f6a2 and replaced it by something
incorrect: SubstSymMap should never have side-effects: otherwise,
calling 'tpe1 <: tpe2' for instance would modify the symbols in
annotations of tpe2.

SubstSymMap now always creates new trees before changing them.
SI-6591 Reify and path-dependent types

Reification scheme changed. Now Select an SelectFromTypeTree trees
reified appropriately, as Select and SelectFromTypeTree accordingly.
Packages and Predef object was excluded in order not to break the
existing reification scheme and not to break tests which rely on it.

Reified free terms can contain flag <stable> to make reified values
become stable identifiers. For example in the case of
reify_newimpl_15.scala

    class C {
      type T
      reify { val v: List[T] = List(2) }
    }

class C reified as free term C$value, and List[C.T] becomes
List[C$value().T], so C$value.apply() need to pass stability test
isExprSafeToInline at scala.reflect.internal.TreeInfo. For this purpose
special case for reified free terms was added to isExprSafeToInline
function.

test run/reify_newipl_30 disabled due to SI-7082
test t6591_4 moved to pending due to SI-7083
term and type reftrees are now reified uniformly

Top-level (i.e. owned by a package) => Ident(symbol)
Nested (i.e. owned by an object or a package object) => Select(owner, symbol)
Inner (i.e. owned by a static class) => selectTerm/selectType(owner, name)
Non-locatable (i.e. everything else) => see GenTrees.scala for more details

Changes w.r.t the previous approaches:
  * Top-level refs are no longer reified as Select(This(package), symbol).
    Proposed reification scheme is as resistant to resetAttrs as previous one,
    but is at the same time much shorter.
  * Refs to definitions from package objects are no longer Ident(symbol).
    Otherwise reflective compilation of things like `_ :: _` fails.
  * Contents of Predef._ and scala._ are no longer treated specially.
    This increases the size of reificode, but is more hygienic.
accommodates pull request feedback

https://github.com/scala/scala/pull/2072
Merge pull request #2091 from JamesIry/2.10.x_SI-6478

[backport] SI-6478 Fixing JavaTokenParser ident
Merge pull request #2017 from retronym/ticket/6666

Booking more progress on SI-6666
Merge pull request #2092 from lrytz/t7096

SI-7096 SubstSymMap copies trees before modifying their symbols
SI-5675 Discard duplicate feature warnings at a position

When -feature has not been enabled, we were double counting
identical feature warnings that were emitted at the same position.
Normal error reporting only reports the first time a warning
appears at a position; feature warning counter incrementing
should behave the same way.

@hubertp: Fixed .check files that were broken in the original commit.
Merge pull request #2095 from hubertp/ticket/5675

SI-5675 Discard duplicate feature warnings at a position
Merge pull request #2094 from scalamacros/ticket/6591

 SI-6591 Reify and path-dependent types
Expanded bytecode testing code.

def sameMethodAndFieldSignatures compares two classes to verify
they have all the same methods and fields, and no others.
Fix for paramaccessor alias regression.

A binary incompatibility with 2.10.0 revealed a bug I had
introduced in c58647f5f2.
Merge pull request #2100 from paulp/pr/fix-super-varargs-saved

Fixing binary compat for $super regression