[Frontend-GNOME] Initial treeview navigation implementation (closes: #107, #292)

This treeview based chat navigation replaces the tab based navigation.

Known issues:
 * Missing keyboard binding (uses tab navigation)
 * Missing context menu (to close)
 * Missing chat icons
 * Desktop notifications are always shown
 * Items are unsorted
 * Flickering when changing the selection
Merge branch 'master' into experiments/treeview
[Frontend-GNOME] Alphabetically sort the chat tree
[Frontend-GNOME] Only show desktop notifications for invisible chat rows

Thanks goes to Carlos Martín Nieto for API hints
[Frontend-GNOME] Support icons in chat tree
[Frontend-GNOME] Avoid re-rendering the chat in the tree too often
[Frontend-GNOME] Avoid re-rendering the chat in the tree for non-changes
[Frontend-GNOME] Working keyboard binding for chat tree
[Frontend-GNOME] Fixed sorting person chats after group chats in chat tree
[Frontend-GNOME] Disable chat tree when reconnecting to engine
[Frontend-GNOME] Set ChatTreeView.CurrentChatView from ChatViewManager
[Frontend-GNOME] Change current chat using the authoritative ChatViewManager
[Frontend-GNOME] For UI consistency set Smuxi as initial chat selection
[Frontend-GNOME] Switch focus to chat tree in browse mode
[Frontend-GNOME] Restored original entry alignment
[Frontend-GNOME] Tolerate invalid tree iterators in ChatTreeView.Remove()

Protocol chats are potentially removed before its children. Because of the
tree structure the children are automatically removed when their parent are
remove and thus Remove() needs to tolerate this situation.
[Frontend-GNOME] Context menu for chat tree
Merge branch 'experiments/treeview'