'Search ``self.directories`` for potential plugins, load them, and cache
in ``self.plugins``.
:rtype:                 odict
:returns:               ``self.plugins``'

def load_plugins(self):

    for plugin_path in self.find_plugins():
        try:
            plugin = self.load_plugin(plugin_path)
            if (plugin and (plugin.name not in self.plugins)):
                self.plugins[plugin.name] = plugin
                log.info('%s,    loaded    plugin:    %s', self, plugin.name)
            elif (plugin and (plugin.name in self.plugins)):
                log.warning('%s,    plugin    with    name    already    exists:    %s.    Skipping...', self, plugin.name)
        except Exception:
            if (not self.skip_bad_plugins):
                raise
            log.exception('Plugin    loading    raised    exception:    %s.    Skipping...', plugin_path)
    return self.plugins
