Throw an exception when loading a plugin that is already loading.
If a plugin used an API in its constructor that also loading the same plugin, the caching mechanism of
PluginManager#getCachedPlugin
were bypassed and the protection against instantiating a plugin class more than once was
disabled.
This fix throws a better exception to explain the situation and provides a better way to use for example the
Navigation
API inside of a constructor.
Fixes #4317 (closed)