Fixes:
- Cannot diff a file that does not belong to a project
- Cannot commit when a temporary diff/log view is open
due to the current file pointing to a temporary directory
- git's project-related actions not passing the correct
relative path.
Implementation:
- Centralize code to listen for Qt Creator's relevant state changes
in VCSBasePlugin, dispatching the changes to the instances affected.
(avoiding multiple invocations of searches/QFileInfo on current).
- Do the same for the corelistener catching closing SubmitEditors.
- Introduce VCSBasePluginState representing the relevant state
(current file/project).
- Call git with working directory set and relative arguments
- Remove setEnabled/isEnabled() logic of IVersionControl
- Pass toplevel from VCSManager to avoid duplicate searches.