Skip duplicate configurations.

This should resolve #289.

This also detects a bad configuration where multiple blocks attempt to write
to the same destination with different sources.

I realize #324 is already a PR for this, but the method taken in that PR is O(n^2) and this avoids that extra looping. This PR also has tests.