Split the merger into a separate process

Connect it to Zuul via Gearman.  Any number of mergers may be
deployed.

Directly find the pipeline for a build when processing a result,
so that the procedure is roughly the same for build and merge
results.

The timer trigger currently requires the gerrit trigger also be
configured.  Make that explicit inside of the timer trigger so
that the scheduler API interaction with triggers is cleaner.

Change-Id: I69498813764753c97c426e42d17596c2ef1d87cf
Separate merger/server pidfile/logging better

So that they may safely coexist on a single host.

Change-Id: I64698423670bf11051c40ad80427643dd0f3d0cd
Cancel obsolete builds on reconfiguration

Cleanup running builds for jobs that are no longer defined on
reconfiguration.

Change-Id: I746a5ba8d9034ae846fd77080af2bfabc8aedf44
Remove double accounting of builds

The "building_jobs" dictionary on pipeline managers is no longer
necessary because the object data model is sufficient to find all
of the running builds.  Remove the unnecessary second list.

Some of the protections that checked that builds were in this
dictionary are also no longer needed as it is not possible to
receive a result for a build that the running Zuul did not
request since the change to use Gearman.

Change-Id: I10de7edcf8356885f5f2d2f45d7014582bcbc3cf
Merge "Cancel obsolete builds on reconfiguration"
Merge "Remove double accounting of builds"
Register merge jobs before starting the worker

It's possible gear doesn't deal with this case gracefully.

Change-Id: Icbc79ffdad7de05df53b590ca62a7539fd62c6b5
wmf: soften requirements

WebOb and paramiko have a minimal version which is enforced by OpenStack
but is most probably not needed.

ordereddict is for python 2.6, the feature is included in python 2.7.

Change-Id: I1aa1e3ae496d68d25dd64e8b21d2057c473342f4