[AutoSaver] Rework AutoSaver so each object can use own instance

Instead of saving everything in MainApp::saveStateSlot, save each object
separately. As a result, this will save a lot of writes to disk.

Other changes includes:
Saving bookmarks also in private mode. Closes #1208
Cleanup of code
[Session] Save session to QByteArray and then write it to file

Instead of appending data to file, write all session data at once.
This should help preventing corrupting session.dat file.

Closes #1247