Let code using ConfigFile be testable

Add an interface `ConfigFiler` for `ConfigFile`. Any struct using `ConfigFile` can use `ConfigFiler` instead, such that they can make mock for `ConfigFiler`