cleanup
use trove map, handy method to avoid new map creation
use trove map
ensure that settingsSavingComponent.save invoked regardless of effective save state — we should call it even if nothing to save
don't need be exportable
[vcs] style: delegate to fuller constructor
[vcs] Inline unregistered roots: use wrapper class for table & model

IDEA-111168, IDEA-84497
[vcs] Inline unregistered roots: show them inlined

IDEA-111168, IDEA-84497
[vcs] Inline unregistered roots: handle add/remove/edit buttons

* Disable remove/edit for unregistered roots.
* Let add several unregistered roots: don't show a dialog, just add
  these roots.
* Make sure unregistered roots are always beyond registered ones.

IDEA-111168, IDEA-84497
[vcs] Inline unreg-roots: if valid root is removed add it to unregs

+ fix the comparator to make sure the separator is above unregistered
  roots

IDEA-111168, IDEA-84497
[vcs] Add toggle button to hide unregistered roots from the table
[vcs] Don't treat a root as unregistered if its VCS doesn't support root checking.

In particular, removing <Project>-<none> mapping shouldn't place it
to "unregistered" section.
[vcs] unreg-roots: ignore specified roots from notification

* Deprecate "Ignore All VCS roots warnings".
* Instead let Ignore given roots from the notification.
[vcs] Extract addMapping functionality to a utility method, DRY
[vcs] IDEA-112436 Add unregistered root directly from notification
[git] IDEA-81263 Register Git sub-root in the current project after clone
clarify deprecation
[hg] cleanup & move result handling to onSuccess from invokeLater
[git] IDEA-81263 Register sub-root in the current project after clone
exclude IndexTestGenerator from compile to prevent possible issues with idea developers who have Scala plugin installed or if TeamCity gets that