Split out the changes to dependency reporting from the story to expose local components.

Fleshed out the story to allow a plugin to contribute a new component type for dependency resolution.