Rewritten and restructured decoders and ClientConnection

Next up: ClientSession.
Merge branch 'master' into bug/5224-dovecot
Merge branch 'master' into bug/5224-dovecot
Refactoring and simplifying ClientSession for new model

One upside to this new model is that ClientSession will be greatly
simplified in terms of one-off Events.  Now the various States
merely wait for the appropriate ServerResponse and transition then.
Merge branch 'master' into bug/5224-dovecot

Conflicts:
	src/engine/imap/transport/imap-client-session.vala
Further work to ClientSession

A great deal of simplification thanks to this new model.
Merge branch 'master' into bug/5224-dovecot
Further cleanup

ClientSession is further refined.  ClientSessionManager is much, much
simpler now (at the loss of some bulletproofing).  Starting to crack
Imap.Account, which means darkness is giving way to light.
Merge branch 'master' into bug/5224-dovecot
Imap.Account fleshed out, on to Imap.Folder
Merge branch 'master' into bug/5224-dovecot
Merge branch 'master' into bug/5224-dovecot
Soft assertion on composer context menu: Closes #6469
Fix "Database locked" errors: Closes #6460

Database locking can occur in SQLite far more often than the documentation
suggests, especially when under heavy load.  This patch does three things:
(a) it uses a new retry scheme to handle BUSY errors, (b) key calls in
Db. module use this retry scheme, and (c) ImapDB.Folder calls that could
potentially take a long time (creating/merging lists of emails, listing
batches of email) are broken up into smaller transactions that don't
hold the transaction lock for so long and give SQLite a chance to
free internal buffers, which can cause BUSY errors.
Improve account creation prefetching

I noticed earlier that when an account was first created the
prefetcher didn't swing into action.  It turned out that one of the
prefetcher fixes (for Gmail's STATUS/SELECT messages bug) reported
to the prefetcher than a folder was empty when first created.  This
solves that problem, and ensures that the prefetcher (and all Engine
users) get an accurate total count when the Engine first starts.
Better locking semantics

Testing at home showed prior commit still left a lot of locking
problems on a slow machine with a fragmented database.  This locking
mechanism is a little better, counting down rather than up, giving a
lot of time initially for a write to commit, but the more the locked
transaction waits, the sooner it retries to get in ahead of later
transactions.
Latest translations for prerelease build
Remove strftime modifier from Croatian translation: Closes #6479
Remove second Turkish translation: Closes #6023
Fixed de/sr/hi_IN/fr CR problems, gettext modified files further