Initial ConfigBase, start as a subclass of UserDict.UserDict

This implements a lot of the functionality preceived as important,
uses reclass the sensibly merge in new data, and runs through
collecting config from defaults, user options (command line), the
environment (shell), files to load, and runtime config.

Loading files will open the file as either JSON or YAML based on the
file extension (suffix), with a default to YAML.

Saving files currently dumps the config dictionary as YAML.

Docs and tests are coming and will be used to verify this commit thru
to completion.
WIP tests for ConfigBase

Move config.py > test_config_base.py - fix test discovery
Move test data defaults to tests.defaults - to merge with test_config_base.py
Update tests for ConfigBase, include coverage for read/write to file
Update test defaults/mock data for ConfigBase tests
Update tests for ConfigBase, fix loading data formatted as JSON