SI-8153 Mutation is hard, let's go shopping with an empty list

Changed the implementation of iterator to be more robust to mutation of the underlying ListBuffer.

Added a test to make sure bug is gone.

Fixed an "unsafe" usage of ListBuffer.iterator in the compiler, and added a comment explaining the (new) policy for iterating over a changing ListBuffer.

The compiler now uses a synchronized-wrapped ArrayBuffer instead of ListBuffer, as that makes the (custom) units Iterator more natural to write (and avoids O(n) lookups).
SI-8276 Test for cyclic error caused by (reverted) SI-1786 fix

We reverted SI-1786 recently on the grounds that its means of
avoiding cycles (not sharpening bounds of T[_] when T is
uninitialized) caused unacceptable non-determinism (well:
compilation order dependency) to type inference.

Nary a day later, @gkossakowski hit a regression in scala-io.
Bisection revealed that it stopped working in 2dbd17a2 and
started working agiain after the revert. How's that for
prescience!

I've distilled the cyclic error in scala-io in this test
case.

I'm yet to pinpoint this, followon error, which didn't survive
the shrink ray, and only appeared in the original code:

    error: java.lang.IndexOutOfBoundsException: 0
	at scala.collection.LinearSeqOptimized$class.apply(LinearSeqOptimized.scala:51)
	at scala.collection.immutable.List.apply(List.scala:83)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.correspondingTypeArgument(TypeMaps.scala:5
SI-6632 ListBuffer's updated accepts negative positions

Changed the behavior in SeqLike.updated (which would silently accept negatives and throw on empty.tail) to throw IndexOutOfBoundException.

Updated tests to verify the behavior in ListBuffer.  Everything else SeqLike will come along for the ride.
SI-8177 specializeSym must use memberInfo on high side

When determining whether member `symLo` of `tpLo`
has a stronger type than member `symHi` of `tpHi`,
should we use memberType or memberInfo?

Well, memberType transforms (using `asSeenFrom`) `sym.tpe`,
whereas memberInfo performs the same transform on `sym.info`.
For term symbols, this ends up being the same thing (`sym.tpe == sym.info`).
For type symbols, however, the `.info` of an abstract type member
is defined by its bounds, whereas its `.tpe` is a `TypeRef` to that type symbol,
so that `sym.tpe <:< sym.info`, but not the other way around.

Thus, for the strongest (correct) result,
we should use `memberType` on the low side.

On the high side, we should use the result appropriate
for the right side of the `<:<` above (`memberInfo`).

I also optimized the method a little bit by avoiding calling memberType
if the symbol on the high side isn't eligble (e.g., it's a class).

PS: I had to add a workaround to reifyType, because
we now dealias a little less eagerly, which means
a type selection on refinement class symbols makes it to reify
this broke the t8104 tests.
I also had to update the run/t6992 test, which should now test the right thing.
Tests should be commented and/or use sensible names.
What is it testing? What is the expected outcome? We should not be left guessing.
SI-8188 NPE during deserialization of TrieMap

The writer was using the constructor headf and ef instead of the internal vars hashingobj and equalityobj.
Merge pull request #3526 from retronym/ticket/1786-cycle

SI-8276 Test for cyclic error caused by (reverted) SI-1786 fix
Merge pull request #3376 from Ichoran/issue/8153

SI-8153 Mutation is hard, let's go shopping with an empty list
SI-8177 tidy up in type reification
SI-8283 mutation-free bound inference for existentials

A safer version of the fix for SI-6169 (#3471)

Only modify the skolems to avoid leaking the sharper bounds to `quantified`.

The included test case was minimized from akka-camel
(src/main/scala/akka/camel/Consumer.scala).
Merge pull request #3525 from adriaanm/t8177b

SI-8177 specializeSym must use memberInfo on high side
Merge pull request #3530 from Ichoran/issue/6632

SI-6632 ListBuffer's updated accepts negative positions
Merge pull request #3531 from Ichoran/issue/8188

SI-8188 NPE during deserialization of TrieMap
Merge pull request #3533 from adriaanm/t8283

SI-8283 mutation-free bound inference for existentials