What's the advantage to passing config path as a constructor argument?  I'm not sure that will really work. The path is required to construct the expected config keys.

The idea behind this library is that the expectations for configuration keys are defined statically. If config_path is passed at runtime, we can't validate the configuration immediately when the config is loaded.