Throw an error if a source is added twice to the map. Fixes #771

Why compare with undefined? An existing source is always truthy.