Create a basic test runner script, of sorts

Move util.py > test_util_func.py to ensure auto-discovery of tests
still works.
Separate test data to new module, tests.defaults

These are mock data objects.
initial (WIP) ConfigBase 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
save WIP test script