Accepts a defaults value for read() and readJSON() returns the defaults content instead of throwing error

@SBoudrias 

As per discussion on #9 
@SBoudrias I see your point of simplifying this logic, but this suggested solution has performance impact. Imagine I am calling `readJSON('file-that-is-missing.json', aHugeFile.json)`, then I am basically doing `JSON.stringify` in `read()`, and right after that I will be doing `JSON.parse` just to get my original JSON object back. It seems unnecessary, or did I misunderstood your intention here?

I am actually half way putting in the suggested changes, and even if we didn't have the above concern, I found it a little be weird to call `JSON.stringify()` inside of `read()`. Imagine I am just using `read()` directly and pass in a JSON object as `defaults`, but then I get a string representation of that JSON object back, I am not sure if that would be my expectation in most cases.

Thoughts?