Add receivedOn time stamp to GerritTriggeredEvent.

Gerrit events can be processed by more than one thread so there is no
garantee that events listeners will get notified for each event in the
same order they were received. Add receivedOn time stamp so listeners
have a way to know if an event came in before/after another one.

Change-Id: I566b6ee2263729e6df2409ebe1dc62110053b9e1
Add RepositoryModifiedEvent interface

RepositoryModifiedEvent represents any event raised by a ref created/changed in
the git repository (PatchsetCreated, DraftCreated and RefUpdated).

An example of usage is the gerrit-trigger: to implement wait for
replication feature, when a GerritEvent is interesting, it must wait
for replication to be complete before starting the build but only for
events that created/changed a ref in the git repository.

Change-Id: Icaec80452e4753ee80b38084978953578b488514
Ugrade Jenkins to 1.509

There is an issue with dynamically filled drop down that depends on
another field in the form. If the drop down is nested in the form,
we are supposed to use @RelativePath in addition to the @QueryParameter
but this is not working in 1.480.

Change-Id: Ide59afe293d3dae8171ecd86f75cd38c25583387
Add data structure and UI Support for replication.

The admin can enable replication in server configurations,
add Gerrit slaves, and enable slave selection in jobs.
If the latter is enabled, the user will see a dropdown
containing a list of Gerrit slaves configured with the
Gerrit server that has been selected, and can choose one
slave after which the job will wait for replication events.

Change-Id: Id08852619442290b3b5c8e2f179d10989e98b1af
Implement feature to block build until replication is completed.

Add ReplicationQueueTaskDispatcher that will prevent builds from
leaving the queue until the replication is completed, if replication
is supported and configured for that server. If wait for replication
event times out or if the replication failed, build will be failed.

Add a global configuration parameter to allow configuraiton of
replication cache expiration time.Replication feature requires a
cache for replication events until we can complile against Jenkins
1.520 which introduce a QueueListener extension point.

Change-Id: I58782c2278c1ef68cae405495178c1ea89e279b8