Added TreeElement#read_metadata! abstract supermethod + test

This adds the TreeElement#read_metadata! method as well as the
appropriate overrides.
Specify the metadata file name only once
Pull this method up to the superclass, we need it elsewhere too
Change the implementation of #parse_metadata!

Change the implementation of #parse_metadata! to return the actual metadata
Outsourced metadata_file_path generation
Ensure we do not remove everything endlessly here
Now we can ensure that the metadata is written in _one_ step
Don't do unneccessary file system operations

Ensure that we do not do unneccessary file system operations by
re-writing the metadata every time when calling
the #ensure_metadata_written! method
Try to add the metadata variable before modifying it
Implemented commands for tagging Days, Months and Years

This also refactores something: It outsources the retreiving of the
objects which should be tagged. This allows us to simply override this
in the new commands, so we do not reimplement tagging all the time as we
can use it from the superclass.
Fix: If the hash is set, use it. Else nil.
Ensure the metadata file exists
When reading a tree, we ignore paths which are for a metadata file
We should mention too much args here too
Outsourced condition, fixed order of OR-branches
Moved file-writer helper method
Modified LimitMetadataCommand class

... to fit the new data structure.

It should parse the metadata file if the path is a directory-path.
Implemented: Consider pathes when searching for metadata

The old implementation of this had one issue for the approach we want to
implement:

If there was such a structure:

    content/2014/01/01/01-01-01.txt

And we search for a tag "foo", which is set for the _day_, but not for
the entry itself, it wouldn't show the entry.

With the new implementation, it checks the path and if this path (for
example the day) is tagged appropriate, it remembers it. When parsing
the day for its metadata, it checks if the path of the day appears in
the cache for the tagged roots, if yes, it uses the entry
automatically.

It therefor changes:

    * Split the search_in? into smaller functions, one for search check
      for a file, one for directory.
    * Introduce an instance variable, which remembers the roots of the
    * days, months, years which should be taken anyway.
    * some helper methods added.