Currently serialization is based on three types of files per task:
- base task data
- rarely changing state
- often changing state.
Issues we have:
- whole files are re-written over and over again,
- code is ugly in a way that for some objects two types of serialization needs to be supported,
- there are often problems with corrupted state files.
Rewrite the serialization mechanism to use sqlite database as an underlying engine (with possibility to switch it to something else if needed).