File Based Configuration

This change adds a class which gives us the ability to load configuration data from files instead of environment variables.  In addition to this the `load()` method also provides the ability to update a dictionary, such as `os.environ`, from a special area in the configuration file so the environment itself could be configured with the yaml files.  This change set does not deprecate or remove any of the existing functions to read environment variables however as that would be a breaking change.

The configuration files are YAML instead of json because:

* The syntax supports comments making long term maintenance easier, the current json spec does not support this.
* It's more human readable and is much more forgiving with regards to syntax
* It differentiates internal data dumps (json) from configuration files (yaml)
* It's easy to install (you *can* use the c-extension, but it's not required)

These changes are based on some older code from a while back.  It didn't take long to convert the code over so if it's missing something simple or needs to be changed we should feel free to do so.