MetaData redesigned

Added base class MetaData that defines common interface for any MetaData
handling class.
MetaDataStore can now use arbitrary class for Metadata handling.
The Metadata specification in settings has changed:

'metadata': [
    {"class": "full.path.to.metadata.class",
     "metadata": [(tupple, with, loader, arguments)]},
     ]