QpStorage dynamically chooses the right DAO even when passed base classes like QObject
Merge commit 'fec245a1b4106a2231648f206449ebc5dc6403bc' into feature/nw-refactor

* commit 'fec245a1b4106a2231648f206449ebc5dc6403bc':
  Squashed 'lib/QPersistence/' changes from 9a0a692..5725bb3
Add an assert for valid ids in DAO::readObject, which aids debugging
Added CSV exporter
Qp: Add operator== to all relations to ease creating object relations
QpStorage::update: Ignore unnecessary unreachable-return-warning for a QT_DEBUG qFatal
QpObjectListModel: Emit dataChanged for the whole row of an updated object
Qp::synchronize: Expose the synchronization-mode parameter to the public methods
Merge branch 'feature/nw-generalImprovements' into 'develop'

Feature/nw general improvements

See merge request !9
Fix Compilation problems with MSVC
QpMySqlBackend::variantTypeToSqlType handles QMetaType::Variant correctly
QpSortFilterProxyObjectModel: Moved much code to the base class
Qp::variantUserType can handle enums.
QpMetaObject::forMetaObject added
QpMetaProperty::nameFromMaybeQualifiedName added
QpModel added
wip

Conflicts:
	src/ui/basics/materials/materialsPage.cpp
QpMetaProperty::read added
QpModelBase: Minor Code-layout changes
Qp::variantUserType(QMetaObject) added