SI-7494 Each plugin must only be instantiated once.

The old behavior was that Plugin.loadAllFrom took a distinct
list of plugin locations.

The broken behavior incorrectly punted to the pruning
algorithm in Plugins.loadPlugins$pick.

The new behavior is to distinctify the list of class names
to load.

This is more robust; under the old scheme, specifying the
continuations.jar under two file names would fail as
described in the ticket.

Pruning a plugin by disabling (-Xplugin-disable) or because
it steps on someone else's phase name suffers the same
defect. There is no way to tell the plugin it has been
benched. And you know that global I gave you?  Can I
have it back?
SI-7427 stop crashing under -Ydebug.

Change "dumpClassesAndAbort" to "devWarning". You can witness
it happen like so.

  % scalac test/files/pos/t7427.scala -Ydebug -Xdev
  ...
  [running phase cleanup on t7427.scala]
  [running phase icode on t7427.scala]
  warning: !!! PJUMP(method matchEnd4)/scala.tools.nsc.backend.icode.GenICode$PJUMP is not a control flow instruction
  warning: !!! PJUMP(method case6)/scala.tools.nsc.backend.icode.GenICode$PJUMP is not a control flow instruction
  [running phase inliner on t7427.scala]
  [running phase inlinehandlers on t7427.scala]

Having now lived with this for months, I have no ambition to
unravel the actual problem, I just want it to stop crashing.
Merge pull request #2565 from paulp/issue/7427

SI-7427 stop crashing under -Ydebug.
An attempt to make tests deterministic.

The nondeterminism presently showing itself in
presentation/implicit-member is a consequence of the
presentation compiler tests relying on details of the
behavior of toString calls. We need to stomp this out,
but it will take a while. Based on the check file
changes enclosed with this commit, this will suffice
for the presentation compiler tests. A broader assault
will have to take place, but not yet.
Merge pull request #2566 from paulp/pr/nondeterminism

An attempt to make tests deterministic.
SI-7494 Tests for status quo

Exploit SI-6446 fix to move old pending tests for plugins to the
active pool.

Also, nuance the partest runner to allow the compiler to crash
with a FatalError if a check file is present.

Some of the plugin tests make phase assembly throw.

One of the legacy tests was moved back to pending:

There seems to be a race for who shall be deemed truly dependent.

Back to pending for you!

apm@mara:~/projects/snytt/test$ ./partest files/neg/t7494-cyclic-dependency/
Selected 1 tests drawn from specified tests

> starting 1 test in neg
ok 1 - neg/t7494-cyclic-dependency

1/1 passed (elapsed time: 00:00:04)
Test Run PASSED
apm@mara:~/projects/snytt/test$ ./partest files/neg/t7494-cyclic-dependency/
Selected 1 tests drawn from specified tests

> starting 1 test in neg
!! 1 - neg/t7494-cyclic-dependency               [output differs]
> 0/1 passed, 1 failed in neg

>>>>> Transcripts from failed tests >>>>>

> partest files/neg/t7494-cyclic-dependency
% scalac t7494-cyclic-dependency/ThePlugin.scala
% scalac t7494-cyclic-dependency/sample_2.scala
error: Cycle in compiler phase dependencies detected, phase cyclicdependency1 reacted twice!

% diff files/neg/t7494-cyclic-dependency-neg.log files/neg/t7494-cyclic-dependency.check
@@ -1 +1 @@
-error: Cycle in compiler phase dependencies detected, phase cyclicdependency1 reacted twice!
+error: Cycle in compiler phase dependencies detected, phase cyclicdependency2 reacted twice!

0/1 passed, 1 failed (elapsed time: 00:00:04)
Test Run FAILED
Merge pull request #2562 from som-snytt/issue/double-plugin

SI-7494 Each plugin must only be instantiated once.