PluginList#unregister_plugins: If the array of plugins we're iterating over is the PluginList itself, iterate over a copy

If unregister_all calls unregister_plugins with the PluginList
instance, we end up iterating over an array that we're
modifiying (removing entries) during iteration , which leads to
skipping elements.

Closes gh-111
Merge branch 'maint'