Refactored: Replaced same functionality by supermethod
Refactored path checking into supermethod
Refactored path-regex building into method
Outsourced read-check into function
Moved method
Moved method
Replaced #categories and #tags methods by metaprogramming foo
Outsourced metadata-to-yaml-lines into method
Outsourced file writing into method
Removed unused code
Added Array#flatmap

This method maps an method on the elements of the Array and flattens the
result.
Use Array#flatmap to get flat entries array. Also refactored into several methods
Refactored reader command checking into own function
Refactored Dir creation in helper method
Removed redundant parameter
Shortened code
Splitted code up even more by outsourcing path selection
Outsourced class generation, too
Added Array#without! and Array#without

These methods return the (modified or new, respectively) array, whereas
the arguments to the method are removed from the array.
Use the new Array#without! method to remove the "." and the ".." directory entry from the array