Purged DebruijnIndex.

Apparently everyone agrees it's not used anymore.
Fix for SI-5130, precision disappearing from refinement.

Remove some code, win a prize.
Fix for SI-5859, inapplicable varargs.

And other polishing related to varargs handling.
Fix for SI-5353, imperfect error message.

The fix of course is a perfect error message.
Fix for SI-4729, overriding java varargs in scala.

This was a bad interaction between anonymous subclasses
and bridge methods.

  new Foo { override def bar = 5 }

Scala figures it can mark "bar" private since hey, what's
the difference.  The problem is that if it was overriding a
java-defined varargs method in scala, the bridge method
logic says "Oh, it's private? Then you don't need a varargs
bridge." Hey scalac, you're the one that made me private!
You made me like this! You!
Fix for TypeVar instantiation.

In an effort to reduce the enormous amount of duplication
which now exists among methods which attempt to deduce something
about the relationship between two types, a sampling (and only
a sampling - this might not even be half of them) given here:

  def isAsSpecific(ftpe1: Type, ftpe2: Type): Boolean
  def isCompatibleByName(tp: Type, pt: Type): Boolean
  def isConservativelyCompatible(tp: Type, pt: Type): Boolean
  def isConsistent(tp1: Type, tp2: Type): Boolean
  def isDifferentType(tp1: Type, tp2: Type): Boolean
  def isDifferentTypeConstructor(tp1: Type, tp2: Type): Boolean
  def isDistinguishableFrom(t1: Type, t2: Type): Boolean
  def isNeverSubType(tp1: Type, tp2: Type): Boolean
  def isNumericSubType(tp1: Type, tp2: Type): Boolean
  def isPlausiblyCompatible(tp: Type, pt: Type): Boolean
  def isPopulated(tp1: Type, tp2: Type): Boolean
  def isSameType(tp1: Type, tp2: Type): Boolean
  def isSameType2(tp1: Type, tp2: Type): Boolean
  def isSubType(tp1: Type, tp2: Type): Boolean
  def isWeakSubType(tp1: Type, tp2: Type): Boolean
  def isWeaklyCompatible(tp: Type, pt: Type): Boolean
  def matches(tpe1: Type, tpe2: Type): Boolean
  def overlaps(tp1: Type, tp2: Type): Boolean
  def typesConform(tp: Type, pt: Type): Boolean

I began pulling a thread left by moors in isPopulated:

  need to investgate why this can't be made symmetric --
  neg/gadts1 fails, and run/existials also.

Followed that to this code in TypeVar:

  val newInst = wildcardToTypeVarMap(tp)
  (constr isWithinBounds newInst) && { setInst(tp); true }
                                        -------^

That was the obstacle to symmetry, because it creates a
cycle in e.g. run/existentials.  Kept pulling the string,
came back to my own comment of long ago:

  !!! Is it somehow guaranteed that this will not break
  under nesting? In general one has to save and restore
  the contents of the field...

Decided that uncertainty could no longer be tolerated.
Unless it can be proven somehow that there will never be
crosstalk among the save/suspension points, we should do
it this way even if nothing demands it yet.

What's in this commit:

 - Made isPopulated symmetric.
 - Made setInst resistant to TypeVar cycles.
 - Fixed above mentioned bug in registerTypeEquality.
 - Added some rigor to the suspension/unsuspension of TypeVars
   so it will not break under nesting.
 - Recovered pos/t0851.scala from its deletion.
Recovered a bunch of deleted tests.

Are we in the habit of simply deleting tests when they
become inconvenient? A comment referenced test "0851" as the
example of why the code was needed; the test was deleted
years ago for no reason I can see except that it was not
passing at the time.  Words fail me.

Public Service Announcement: tests which are failing are
the MOST USEFUL tests.  DON'T DELETE THEM!
Merge pull request #1418 from paulp/no-debruijn

Purged DebruijnIndex.
Merge pull request #1423 from paulp/issue/5130

Fix for SI-5130, precision disappearing from refinement.
Merge pull request #1430 from paulp/SI-5859-5353-4729

Fixes for SI-5859, SI-5353, SI-4729.
Merge pull request #1437 from paulp/typevar-suspension

Typevar suspension