[log] Persist commit authors on disk

To be able to reuse them from the commit dialog even without opening
the log tab.

Use PersistentEnumerator instead of in-memory HashMap.
If it fails to create for some reason, fallback to do-nothing
implementation instead of throwing exceptions which we can't handle
anyway.
[log] register the hash map in Disposer
[git] Fix commit author dropdown

Get the list of authors from new log implementation:
* Let VcsUserRegistry to be a service.
* Extract getUsers to the interface.
* Don't extract other methods: in particular, flush() is not a
  good candidate for an API method; use implementation where needed.
[git] IDEA-55256 Add completion to the commit dialog "author" field

Improve ComboEditorCompletionContributor to use the PlainPrefixMatcher
when needed.
[git] IDEA-55256 Disable spell check in the commit dialog "author" field

Set up the editor in addNotify, since before than the Editor is not
created yet => it can't be customized.
[git] No ellipsis for the author name is needed: combobox is adjusted automatically

This fixes IDEA-91620 and IDEA-121825
[git] remove duplication
[git] simplify
[git] Auto-correct some commit author format mistakes

* add a space before email section;
* enclose email in triangle brackets.

Relates to IDEA-75228
[vcs] IDEA-119824 Display commit error right away
[vcs] "Commit failed message" + pluralize only when needed
[git] Cleanup commit error message

Commit exception is shown directly in the UI after commit fails
=> remove the "fatal:" prefix as well as the debug info "during
executing ...".
In this particular case this info is not necessary even
in the log, because it is clear that it happened during commit.

Before the fix commit message looked like:
"fatal: No existing author found with 'bar' during executing git
commit -F <some params> --author=bar <more params>"
Now it looks like that:
"No existing author found with 'bar'"

A better fix would be to add some "presentable message" field to
VcsException.
[git] cleanup