[NX-450] Component Source API

JIRA: https://issues.sonatype.org/browse/NX-450
Agree with @cwilper that this should be `T extends Component` if/when the Component interface is reintroduced