Implement challenge #4.
Use higher-order functions where possible.
Fix handling of empty files.
Don't add '.' to files from the current working dir.
Use a character set to validate paths.
Merge pull request #1 from int3/master

Implement Challenge #4.