Repl javap decodes various synthetic names for us (fixing SI-6894)

For instance, javap -app Test is equivalent to javap Test$delayedInit$App
with the correct line and iw prepended.  This works by taking Test as a
name in scope, translating that, and then supplying the suffix.

Then javap -fun Test shows Test$$anonfun*, and for member m,
javap -fun Test#m shows Test$$anonfun$$m*.

This also works for classes and values defined in the repl.
javap -fun -raw m shows $line3.$read$$iw$$iw$$anonfun$m$1.

E.g., javap -fun scala.Enumeration obviates knowing or guessing
scala/Enumeration$$anonfun$scala$Enumeration$$populateNameMap$1.class.

Also, scala> :javap -fun scala.Array#concat
but still to do is using imported syms.

Both files and replout are supported for searching for artifacts.

The trigger is detecting the synthetic name (has an interior dollar).

Still to do, filter the output on Test#m to show only m.

Need a way to explore the list of artifacts; ideally, related symbols
would be available reflectively.

Prefer companion class to object, otherwise it's not showable;
for object, require dollar when both exist.

A JavapTest is supplied that is a ReplTest that asserts something about
its output instead of printing it.
Created value class Variance.

This will be instead of passing numbers like -1 and 1 around,
also instead of a variety of named constants like AnyVariance
and CoVariance, and also instead of sometimes using the flags
Flag.COVARIANT and Flag.CONTRAVARIANT for things.

1, 2, 3, go-type-safety-rah!
Incorporated Variance value class in Variances.

No one will ever know what it took for me to refine
Variances into its current condition. A LONELY QUEST.
Relocated redundant variance checking code.

The variance code in Refchecks is 75+% redundant with
our eventually canonical variance traversing code now in
Variances, but as usual it is time consuming to stamp out
this damaging redundancy so for the moment I am simply
moving it into close proximity with def variancesInType
to abet future work.
Moved Variances into SymbolTable.

So I can centralize all the redundant variance code.
Moved VariantTypeMap into Variances.
Functionalization of Variance code.
Eliminated VariantTypeMap.

Made variance tracking a constructor parameter to TypeMap.
Eliminated more variance duplication.
Move escaping local logic into VarianceValidator.
Move isFinalType logic to Symbol.

It's strictly based on the symbol, not the type.
Sweeping up in Variances.
Eliminated redundant validateVariance.

It had repeated all the TypeMap logic. I made it a TypeMap.
Handle variance exclusions in a less ad hoc manner.
Boosted test coverage.
SI-6566, unsoundness with alias variance.

This wasn't as bad as it could have been. All these changes
plug soundness holes in trunk. Mostly we're looking at type
aliases which were merely protected when they had to be
protected[this] not to allow unsound variance crossover.
SI-5378, unsoundness with type bounds in refinements.

As the comment says:

Not enough to look for abstract types; have to recursively check
the bounds of each abstract type for more abstract types. Almost
certainly there are other exploitable type soundness bugs which
can be seen by bounding a type parameter by an abstract type which
itself is bounded by an abstract type.

SPECIAL: BUY ONE UNSOUNDNESS, GET ONE FREE

In refinement types, only the first parameter list of methods
was being analyzed for unsound uses of abstract types. Second
parameter list and beyond had free unsoundness reign. That bug
as well is fixed here.
Renamed isTrackingVariance to trackVariance.
Merge pull request #1849 from som-snytt/issue/6894-javap-app

Repl javap decodes various synthetic names for us (fixing SI-6894)
Merge pull request #1873 from paulp/pr/variance-bonanza

a painstaking examination of Variance
catching up