qml: improve main views loading
This MR aims to move common parts for main view loading into a separate component.
Introduces 'MainViewLoader' which can be used for loading view subtypes depending on
model or user preferences like grid or table view. It also handles common actions across
sub-views such as - restoring of initialIndex when the view is reloaded and navigation cancel.
This also helps to make sure only one type of view is loaded at a time.
ref #27844 (closed)