Remove client-side Akonadi transactions
Right now there are ways for Akonadi clients to control database transaction on the server. While the overall idea of ensuring atomicity of certain operations is good, the client has no knowledge of internal server implementation and behavior and interfering with server's database transactions usually leads to problems - mostly due to the client holding the transaction for a very long time. Especially with SQLite (which does table-level locking), holding the lock for too long results in other database operations failing due to conflict or being stuck on attempting to acquire a write lock on the table.
This milestone is about removing client-side controlled transactions from Akonadi.
It is also the last part that requires the connection to Akonadi server to be stateful and requiring a per-connection thread on the server side. Once client side transactions are removed, we can modify Akonadi server to run only a fixed amount of processing threads in a thread pool and randomly distributing handling of each request to a free worker thread. This should slightly improve RAM usage by lowering the number of threads that Akonadi server has to spawn. That's for another milestone, though.