Add initial end-to-end functional test scenarios

Add the CreateChangesTriggeringGc scenario, based on the included
CheckProjectStatisticsAfterGc which can also be run alone.

The goal of these scenarios is to cover the smoke testing of a locally
installed gc-conductor plugin with default configuration. Plugin's
gc-executor component is also assumed to be running, alongside Gerrit.

Assume plugin's configuration defaults in CreateChangesTriggeringGc as
base constants values used in test calculations. These are followed by
LooseObjectsPerChange and ChangesPerSecond, established empirically.

This plugin works in phases on which CreateChangesTriggeringGc is based:

1. The scenario creates enough changes to make its repository dirty.
2. Conductor waits 60s by default then re-evaluates project's dirtiness.
3. Conductor enqueues that (test) project for GC as deemed dirty enough.
4. Executor waits 60s by default then dequeues that project for near GC.
5. Executor runs GC on the dirty test repository, within a few seconds.
6. Scenario expects no loose objects remaining after GC's allotted time.

Between steps 1. and 2. above, the scenario issues one last change to
trigger a re-evaluation leading to enqueueing. All the created changes
are deleted by the scenario once done checking project statistics. This
is achieved by means of the included DeleteChangesAfterGc scenario,
which can only be run from an aggregating scenario similar to
CreateChangesTriggeringGc.

Feature: Issue 12752
Change-Id: I3b57c0c2f946718cdbad54abac06b3aeda0a2121
7 files changed