Detect a duplicated name in the __all__ list

If a module advertises an __all__ lists that contains the same name
twice, emit a warning. This works by re-using the all_names set to see
if any of the exported names are in the original list more than once.
Unit test for duplicated names in __all__

Adds a new unit test that checks to see that the DuplicatedExport
message is emitted when the same name appears in the __all__ list more
than once.