Source Plugin improvments
- Unit tests
- incompatibility checking
- detection of duplicate sources
- more thorough cleanup on destroy