do not highlight method unused if referenced via overridden
Unused import
[dvcs] extract comparator to a constant
[push] Move the PushTargetTextField to a common place
[vcs] improve toString
[git tests] extract MockGitRepository to a separate class, get rid of custom MockVirtualFile implementation
[git tests] Move overrideService to a utility class, introduce the same for application service
[git] Move guessing default remote to GitUtil
[git] Rewrite Git push procedure & use new VcsPushDialog
[git] Restrict the ability to force push

* Introduce a checkbox in the settings which hides the "Force push"
  button by default.
* Let define a list of patterns of branches which are "protected"
  from the force pushing: the force push button will be disabled if
  such branches are selected as push targets.

Relates to IDEA-85773.
[push] simplify work with additional options panel

* rename the method to create... to emphasize the fact that this
  method creates the new panel, i.e. is called only once.
* remove addValueChangeListener and collect values directly from panels
  when push is pressed.
* Let PushController.myPushSupports contain only supports for VCSs
  which actually exist in the project.
[git] IDEA-77483 Push tags

Pushed tags are reported by 'git push' output like all other references
=> let doPush report several native results; only one of them is the
important branch result (since we never push from several branches),
all other are tags.

Store the source ref in the GitPushNativeResult, to be able to
determine the pushed tag name.
But don't store the error result there, since it is very different
from "normal" result.
[git] If repos are synchronized, select all of them in push dialog
[push] Simplify calculating if this is a single-repo project
[push] simplify controller: move input verifier into the branch panel
[push] simplify: node.setChecked is not needed, since this method is caused by node checking.
@NotNull
cleanup
[git] update repository after push
[dvcs] DRY & rename in repo sync settings

* Rename to "Control repositories synchronously", since not only
  branch operations are affected now.
* Move title & tooltip to the DvcsBundle.
* Rename the settings class to reflect more general nature of the
  setting.
* Make the value class inner of DvcsSyncSettings: seems to be more
  logical to keep it there instead of introducing a separate class
  for such enum.