Support for multiple source sets

Essentially @matsuimp's work rebased on master; closes #21

Also adds project configuration dependencies; closes #30