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 #1873 from paulp/pr/variance-bonanza

a painstaking examination of Variance