Fix variable initialization
Prompt for saving of abook on window close
abook: make sure we work with indexes from a correct model and that we always mark the current one
Prepare the contact widget to be usable multiple times

IOW, don't use global state when not needed.
GUI: integrate the addressbook with Trojita
Merge branch 'addressbook'

Conflicts:
	src/Gui/Util.cpp
	src/Gui/Util.h

fixes #270
Addressbook: improve handling of prettyName when creating new contact

If prettyName is empty, use the default value for the name field (so
don't show an empty name field, users will think they cannot click
there).

If prettyName is not empty, set the text of the QStandardItem to
prettyName. Before, the text of the QStandardItem would be
"[New Contact]" until we selected another contact.
qt4.6: there's no QDateTime::currentMSecsSinceEpoch under 4.6
qt: there's no QUrl::isLocalFile in 4.7
qt: QLineEdit::setPlaceholderText got introduced in Qt 4.7
Remove unused include (which is also missing from older Qt)
RPM: inform about the be.contacts application
qmake: use old boring trojita-wide install configuration
Addressbook: set "Add" button as default

Before this commit, the "Delete" button was the default (implicit). This
had some undesired effect: searching for a contact using the Filter and
then pressing the Return key would delete the selected contact.
threading: optimize the flags() method to not descend into the rather expensive path
threading: delay tree pruning until after the event loop is reached again

This is not really a proper fix (servers who don't do VANISHED will still make
the client suffer), but it's a step in the right direction, and also something
much, much more effective than trying a special-case branch for removal of leaf
nodes.

The idea here is to cut the total amount of times pruneTree()/layoutChanged() is
called in total. I'm worried about using non-zero delay due to the unit tests...

refs #642
Addressbook: create helper class for QSettings groups

This way, endGroup() will always be called when we are done parsing
the current contact.

When endGroup() is not called in the readAbook() method, entries after
the current entry are not correctly parsed so these contacts won't
show up in the addressbook.
Merge remote-tracking branch 'cschutijser/junk-3'
Fix copyright header for the AbookAddressbook

Thomas is the original author, Caspar spent a great deal of time polishing, and
I put it together.
Fix coding style