[log] "Checkout Revision" action to the new log, some refactoring

* Instead of making VcsLog a project service and acquiring an instance
  from the ServiceManager, provide it from the DataProvider via the
  defined DataKey.
* Make the MainFrame the main Log component and the DataProvider.
* Implement GitCheckoutRevisionAction (just delegate to the GitBrancher)
* Introduce VcsLog#getSelectedDetails instead of getSelectedCommits +
  getDetailsIfAvailable, because it can be better for performance
  reasons: getting the Node by Hash in the GraphTableModel can be
  expensive.
[log] Add "New Branch", "New Tag" actions to the log + refactor

* Extract GitLogSingleCommitAction - the common class
  for all Git actions on the log, which operate on a single commit.
* Implement "New Branch" and "New Tag" actions. Use GitBrancher for
  the first, reuse the existing CreateNewTag for the latter.
* Regroup actions in plugin.xml so that they form a single group which
  is then added to the Vcs group.
  It lets add a separator, and also makes the code more clear.
[log] Add "Create Patch" action

Reuse CreatePatchFromChangesAction with update() method overridden in
the same matter, as it is done for GitLogUi: to respect the CHANGES
data key.
[log] "Revert" and other actions above the changes browser

Just use RepositoryChangesBrowser instead of the simple ChangesBrowser.