This linter parses the whole tree at each call, it is unnecessary to run
it for each file being modified.
This diffs adds 2 abstract classes: ArcanistGlobalLinter and
ArcanistGlobalExternalLinter.
The ArcanistGlobalLinter is an adapted version of the
ArcanistFutureLinter, and the ArcanistGlobalExternalLinter is mostly
a copy of the ArcanistExternalLinter.
They ensure that the external linter get only called once, independently
of the number of modified files.
This allow the linters that need to run a single time to simply extend
ArcanistGlobalExternalLinter instead of ArcanistExternalLinter while
keeping the same interfaces and features.