improve plugin error messages

Without this change it's impossible to know exactly why a plugin load failed.

This changes the manager to:

throw a specific error if the plugin is not found in the loaded .info file list
throw a specific error if we are unable to import the plugin
log the traceback when an import fails