Use the correct ring account name in commhistory-tool
Refactor group querying logic into GroupManager and GroupObject

This separates the logic to query groups, update groups in response
to events/signals/contacts and to modify groups away from GroupModel.
The intent is to allow using groups with a more sane API than
QAbstractItemModel, and sharing the same data between several models.

Also introduces GroupObject, which is a QObject-based API serving the
same purpose as the value-based Group. That is much more convenient,
particularly to allow signals for changes to a group. GroupObject is
used exclusively by GroupManager for now.

All existing logic and API (including GroupModel) is unchanged for now.
Introduce ContactGroup and ContactGroupModel
Allow multiple group IDs for ConversationModel

ConversationModel::getEvents is now overloaded to take a QList<int>,
which can be used to query events for a set of groups.
Add declarative convenience API for ConversationModel
Implement ContactGroup::markAsRead
Expose GroupManager to QML, and remove the instance in ContactGroupModel
Add ContactGroupModel::at
Tweaks to types to make QML happy
Use a shared background thread for ConversationProxyModel and DeclarativeGroupManager
Set a parent on ContactGroup instances to prevent deletion in QML
Port GroupModel to use GroupManager

These now share a common backend, completing the split of the querying
logic from GroupModel. The old API in GroupModel is preserved by
forwarding calls to the GroupManager, and a GroupManager will be created
if not set manually.
Emit minimal signals from ContactGroup updates
Improve ContactGroupModel group update logic

Fixes a bug causing all groups with no associated contact to be grouped
together, and avoids re-creating a ContactGroup when contact information
changes and there is only one associated Group.
Connect the modelReady signal in ContactGroupModel
Add ContactGroup::findGroup method
Add signals and a list property for ContactGroups in a ContactGroupModel
Add declarative ContactAddressLookup element

This exposes ContactListener's functionality directly (along with
its bad API) to allow looking up the contact associated with a UID
pair.