improve message parsing, silence XEP-0280 carbons

The parsing of incoming messages / carbons has been streamlined a little
bit, and some code duplication was removed:

 * timestamps now parsed from delay extension, carbon, fallback to OS
 * incoming carbons now trigger a silent notification (no vibro, no sound)
significant rework of connection state indication

SmackableImp now "exports" a ConnectionState variable and a last error
string.

XMPPService is using that data to update the notification _and_ to wake
up the UI.

MainWindow is using that data to display the error popup and to indicate
progress.

TODO:
 * XMPPService: remove rosterChanged() noops
 * fix reconnects (move from XMPPService to SmackableImp)
 * fix error messages in XMPPService (move logic to SmackableImp)
 * SmackableImp: make proper translatable error messages