[NX-450] Component Source API

JIRA: https://issues.sonatype.org/browse/NX-450
I was thinking of 'Pull' in this context as grammatically lazy adjective. :)  I'm actually not 100% happy with Pull vs. Push, simply because Pull will be way more common, and pushing the exception, but I don't want to make all pushable sources inherently pullable.