remove nodename getter, this is superfluous.  create attributes in
__init__ appropriately
added a file with identical endpoint names for testing
fix indentation (i think) according to linter suggestions
move config string into file.  change constructors appropriately
relative imports
add checking for duplicate providers and an appropriate raise.
change the names of the duplicate providers to reflect what's in the
tests
change structure of tests so that it actually works.  move assert to
after with block.  change names to reflect what's in the configuration
file.
add a module-level docstring
added a class level docstring for Config
add a bunch of documentation, as well as dropping a check for
if the provider dictionary is None (no longer necessary)
added a bunch of documentation, error handling for opening files, and
get_provider method