Fix/need different cache dirs for different datasets
# What does this PR do ?

If several `ds_item`s are used for validation or testing and `cache_dir` is set, then pickled features for different features overwrite each other.

**Collection**: nlp

# Changelog 
- if `cache_dir` is set, then an absolute path to dataset is appended to `cache_dir` to avoid collisions
- Both text and labels file names are incorporated into pickled features file name. This is done to avoid collisions in rare cases when there are different labels files for 1 input text file.
- I also changed token classification pickled features name

# Additional Information
* Related to # (issue)
