introduce GenericDataModel and ModelDataCache to have a generic model
add new methods to DatabaseInterface to have a fully generic way to fetch data from it and feed them into a generic model