To do that, I had to make the InternalIPKernel class a traits class.
In that case, do not initialize the GUI loop. It's for testing.
Previously, an incorrect egg in the plugin_path such as an inconsistent egg name with the version of the package would cause the plugin manager to fail. The `on_broken_distribution` trait can now be set on the plugin manager to handle errors such as VersionConflict in the eggs in the plugin_path, in a similar way to how plugin load errors can be handled by setting the `on_broken_plugin` trait.