Reset auto-reconnect cycle when user explicitly changes network preference

Previously, a network error message box would be deleted and reinitialised
only when Trojita got a working connection to the server after a cycle
of reconnect attempts.

Now, whenever the user changes the network preferences, the
Imap::Model::NetworkWatcher apart from resetting the timeouts also emits a
signal that triggers deletion and reinitialisation of the error message
box at the GUI layer. This allows Trojita to treat a user's manual attempt
to re-connect as a new try-fail-reconnect cycle and throws a message pop-
up on a network error (even if the error string hasn't changed since last
time).

Use-Case: Error in network; Trojita shows an error message and starts a
series of auto reconnect attempts. User wishes to stop the attempts and
chooses "Offline" from the Network Access menu item. Attempts stop. After
a while, user wishes to try connecting again and chooses "Free Access".
If attempt to connect terminates in a network error, Trojita throws a
fresh new error message and starts a new auto-reconnect cycle (even if the
error string is the same as what it before the explicit switch to "offline").

REVIEW: 118434
ClearTextPassword plugin: report error on empty password

The password is empty when it's not set in the settings file.
Settings: Hide unwanted elements on the OutgoingPage

As the page is disabled before it is saved we can not use isEnabled() to determine
whether to save the SMTP password or not. isVisible works fine though and the GUI
looks cleaner that way.

REVIEW: 118509
GUI: Prevent a blank line in the Outgoing settings page

It's better to sync the port warning state with whatever is initially in the
settings.

REVIEW: 118523
Gui: Only set default port when changing submission method

Setting the default port during the initial run of the SettingsDialog is already handled
by MSA::Account and setting it during updateWidgets causes the port to be reset when opening
the SettingsDialog.

Signed-off-by: Jan Kundrát <jkt@flaska.net>

Conflicts:
	src/Gui/SettingsDialog.cpp

REVIEW: 118528
Tests: move test bodystructures to a common header file

This is done so that we can use the bodystructures in other tests too
Tests: Added unit tests for Imap::Network::MsgPartNetAccessManager
Do not use TreeItems in PartWidgetFactory

The TreeItem class is an implementation detail of the ImapModel and should not
be used outside the ImapModel.

REVIEW: 118228
Gui: hide portWarning, passwordWarning and passwordPluginStatus when not using smtp

REVIEW: 118531
Support for forwarding messages

Allow forwarding of a message as an attachment or inline, by
means of menu actions. Forwarding takes care of handling the subject
line and marking the original message as "$Forwarded".

REVIEW: 118606
BUG: 321378