Remove Akonadi::Entity and Akonadi::AttributeEntity
Collection and Item now have each their own implementation of attribute handling (which we can factor out into some shared code later), and by not having to deal with the polymorphism of Entity, we can get rid of vtable in ItemPrivate and CollectionPrivate and better re-order member variables. This saves us 16 bytes per Item and 32 (!) bytes per Collection. Tag now requires 8 bytes more of memory due to TagPrivate being QSharedData (but we save something on Tag now). We could also remove the copy-d_ptr-via-temporary-assignment from from Item, because the usecase only really affects Collections. This should make copying Items a bit faster (the assignEntityPrivate() workaround was showing up in callgrind quite high).
Showing with 1456 additions and 1104 deletions