Initial version for Gerrit 2.14

This plugin provides an automated way of detecting, managing and
cleaning up (garbage collecting) the 'dirty' repositories in a Gerrit
instance.

It has two components: gc-conductor and gc-executor.

gc-conductor is a Gerrit plugin deployed in the plugins folder of a
Gerrit site. Its main function is to evaluate the dirtiness of
repositories and add them to a queue of repositories to be garbage
collected. This queue is maintained as a database in a postgresql
server.

gc-executor is a runnable jar that picks up the repositories from the
queue and performs the garbage collection operation on them. gc-executor
can be deployed in the same machine that hosts the Gerrit application or
in a different machine that has access to the repositories and the
postgresql server holding the queue.

This initial version is a squash of Ericsson's internal plugin. The code
(script, logging, unit tests) assume that a folder /opt/gerrit exist and
it modifiable by the user running Gerrit. This limitation will be lifted
in a following up change.

Another limitation is because of a bug in JGit fixed by [1], gc-executor
application can only run one GC at a time, even if more than one worker
is configured. One way to lift this limitation is to build a custom JGit
version including that change and use that custom version instead in
gc-executor.

[1]https://git.eclipse.org/r/#/c/127447/

Change-Id: Iadc0854cc0edff2ef42dc01e8e60e3c9c8d7226e
77 files changed