Use new libcommhistory declarative API for contact info

The new CommGroupModel can provide a Group object, which provides
updated properties on a group, including the contact ID. This means we
can finally show real contact information from ConversationPage.
Move C++ logic to a QML plugin

To make UI easily replaceable, this logic is better handled in
libraries. This is all moved to nemo-qml-plugin-messages now.
WindowManager cannot be moved, as it's responsible for
creating the QML view, which we can't sanely do within QML.

The ContextProvider was also removed from WindowManager, to be
implemented separately in the plugin.
Move external API plugin to shared plugins repository

To finish separating the UI from logic and middleware, the QML plugin
providing external API was moved to nemo-qml-plugins (*not* to be
confused with nemo-qml-plugin-messages, which is internal API).
Remove unused header to fix compile
Fixes NEMO#476: Duplicate conversations can be started via dbus
Make sure contact is updated in ConversationListDelegate

This fixes a problem where the wrong contact may sometimes be shown
in the conversation list after receiving messages from several contacts.
Fix upper case in variable name.
Use correct qml type.
Fix conflicts.
Merge pull request #2 from ruedigergad/master

Fix enum type in account selector
Use common empty state component
Adapt to API changes in nemo-qml-plugin-messages and libcommhistory-declarative