qt: use diff util algorithm to perform partial update of the model
this allows to submit to the view only the changes made on the model when the database changes instead of invalidating and resetting the whole view.
data cache is changed from a windowed view over the data, to a model where data is loaded from the start and loaded by chunk (append to the cache), when data is invalidated the data is reloaded in background and the difference (insertions and deletions) are propagated to the view.