Persist viewstate across project reloads
Loosing expansion state / scroll position on project refresh can be quite annoying sometimes. With this change, the treeview tries to restore its expansion state and scroll position after reloading.
Note that this doesn't use KViewStateSerializer from KWidgetsAddons because that class traverses the whole tree to save state which can be slow for us as the project tree can be massive in size.