gui: refactor MicroscopeModel into sub classes representing each type of GUI

Now called MicroscopeGUIModel, and abstract. Each type of interface (eg, tab) can
have its own specialised version of the GUIModel.

Also, only the tabs which fit the role of the microscope are ever created.