cfreader/[ini, json, yaml, binary, list] with tests!

Issue #784 leaves me wanting to get configfile under test. This PR extracts the file types into their own libraries with test coverage.
As you're returning inside the try{} block - I can't see that this line will ever get hit.   Personally - I'd prefer the try{} block to set `result = yaml.safeLoad(...)` and the `if (cached) return cached;` to be moved inside the catch{} block.