Support multiple triggers

Add the ability for Zuul to accept inputs from multiple trigger
sources simultaneously.

Pipelines are associated with exactly one trigger, which must now
be named in the configuration file.

Co-Authored-By: Monty Taylor <mordred@inaugust.com>

Change-Id: Ief2b31a7b8d85d30817f2747c1e2635f71ea24b9
diff --git a/NEWS.rst b/NEWS.rst
index 91f7e09..b79b4e6 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -11,13 +11,19 @@
   QueueItem has the full context for why the change is being run
   (including the pipeline, items ahead and behind, etc.).  The Change
   is still available via the "change" attribute on the QueueItem.  The
-  second argument is now the Job that is about to be run, ande the
+  second argument is now the Job that is about to be run, and the
   parameter dictionary is shifted to the third position.
 
 * The ZUUL_SHORT_* parameters have been removed (the same
   functionality may be achieved with a custom parameter function that
   matches all jobs).
 
+* Multiple triggers are now supported, in principle (though only
+  Gerrit is defined currently).  Your layout.yaml file will need to
+  change to add the key "gerrit:" inside of the "triggers:" list to
+  specify a Gerrit trigger (and facilitate adding other kinds of
+  triggers later).  See the sample layout.yaml.
+
 * The default behavior is now to immediately dequeue changes that have
   merge conflicts, even those not at the head of the queue.  To enable
   the old behavior (which would wait until the conflicting change was