Here is a basic implementation of composing engines using MEF
As you can see from the example, you can override the built in implementation just by dropping the dotless dll into the same folder. You can even have one engine rely on another simply by [Import]ing the IEngineResolver.
All you need to do to create an external engine is reference ChirpyInterface, implement IChirpyEngine, decorate your class with the [Export] attribute and the [ChirpyEngineMetadata(...)] attribute passing in the name of the engine, a category and a default
file extension. (the attributes of the metadata object are provided mainly for example)
With this setup you can extend existing engines and even add new engines without having to recompile Chirpy.
You will obviously want to expand the IChirpyEngine interface to allow all the behviour you need. You could even expose a method for each engine to supply its own configuration options and use that to build dynamic config pages? (I don't know, I've
not done any VS plugin development before.)