GUI: do not "load" messages when the viewer is not visible

The idea is to save bandwidth (and prevent marking message as read) when the
message pane is not shown.

Thanks to Vayu <vayu@sklinks.com> on the ML for his suggestion.

Thomas Lübking also provided a better way of checking the sizing and suggested
loading the current message when the widget comes back into view.

REVIEW: 110978
Remove reference to QMailCodec to prevent possible confusion
Export function for decoding byte streams using a particular encoding
When decoding from unknown encoding and assuming UTF-8, be sure to not stop at first NULL byte

This does *not* fix #321160 (this code is not even triggered in this situation),
but it's a sane thing to do anyway. I guess that the code shall be audited for
other instances where we might silently truncate the data here; it's caused by
an implicit conversion from QByteArray to uchar*.

CCBUG: 321160
WebKit: convert plaintext input with NULL bytes without silent truncation

This does *not* fix HTML input containing null bytes. I don't know if this
problem is relevant for HTML e-mails as well.

BUG: 321160
REVIEW: 111030
Fix build warning

I should've caught this at the time I reviewed the patch, of course.
Change includes to use fully qualified paths in preparation for porting to cmake
Rename "be.contacts" files to "be-contacts" in preparation for cmake

Looks like cmake's logic is heavily affected by the dots in file names -- it
essentially strips away anything which comes after the dot when performing
automocing.
Remove unimplemented method declaration

For some reason, the cmake-based setup with static libraries hates this.
AbstractCache: implement virtual destructor to make cmake's builds happy

Let's also de-inline the constructor while we're at this.
Merge branch 'dont-load-mails-with-invisible-msgview'
tests: Make sure that a failed mail submission prevents proceeding any further

This, unfortunately, does not help with the QwwSmtpClient because it happily
emits done(true) even after hitting errors earlier in the process. This will be
addressed in the next commit.

CCBUG: 321272
SMTP: do not signal success after hitting a failure earlier on

OK, this is some ugly code -- but it appears that it makes QwwSmtpClient more or
less work. That class is in a bad need for replacement :(.

The problem was that the onDisconnected event handler within the QwwSmtpClient
simply checked whether there are any pending commands, and if there are none, it
proceeded further towards emitting success even though the connection has never
succeeded. This is a wrong assumption in the client's code -- signalling success
just because the connection was severed before any command had a chance to be
queued is not what I would expect when using such component.

This code does *not* prevent duplicate signals about success, but I have yet to
see a situation where it breaks something.

BUG: 321272
REVIEW: 111073
Merge branch 'bug-321272'
GUI: respect the ResizeMode when restoring the user's preference

Turns out that restoring sizes of sections which are not supposed to be
resizeable by user makes hte sizes very, very messy and makes the QHeaderView
forge the desired resizing mode as well.

REVIEW: 111076
qmake: put the gitversion into an extra file to be included
Fix building with QT_STRICT_ITERATORS
Importing the FindRagel.cmake from http://cgit.lighttpd.net/lighttpd/lighttpd2.git/tree/cmake/FindRagel.cmake
Importing from https://github.com/cryos/avogadro/blob/master/cmake/modules/FindLinguist.cmake
GUI: implement LoadablePartWidget::reloadContents

BUG: 321322