move cache responsibilities to config_cache.rb

This continues refactoring the configuration functionality.

*  It adds a singleton class `ConfigCache` that is responsible for selecting which `Config` instance is used for a given file.
*  For consistency with the new class and brevity, `Configuration` is renamed to `Config`
*  We no longer need to require `yaml` in `CLI`

Hopefully we can continue to improve the `Config` and `ConfigCache` classes and tests, and then we won't have to do so much fine grained testing for the CLI class (so we can more easily add additional functionality to CLI later on).