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-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.