setup.py: remove unused subprocess import
plugins: rework plugin loading.

now we use PluginLoaders to find and load plugin classes.
PluginManager.find() returns the union of all the plugins found by
any loaders. PluginManager.load(...) tries to load the plugin from
each loader in turn, stopping when a loader succeeds or throws an
error.

ResourcePluginLoader finds plugins the old way using resources from
the mk2/plugins directory in the installed package.
EntryPointPluginLoader finds them using setuptools entry points, so
setup scripts for other packages can register plugins (or services)
which will be loaded by mark2.
manager: improve error reporting for plugin/service loading a bit