Refactor data sources and targets to use pluginlib
Use pluginlib to load data sources and targets as plugins. (https://github.com/Rockhopper-Technologies/pluginlib) This enables to dynamically add plugins also from external sources (via python entry points)