most the actual work. Currently relies on dynamic loading using dlopen(). See doc/plugin.pod for the plugin API.