Refactoring + documentation

* refactor the File and FileInfo class hierarchy by moving the
constructor that builds the name parts to the FileInfo class
* add some documentation with a link to the blog article