Add zuul.items to job vars

In v2 there was a way for a job to see all the changes being tested
with it.  This is more complicated in v3 with the addition of
multiple sources.  Fortunately, we can pass all the information we
need to accurately represent the situation to the job via an
data structure in ansible variables.

Change-Id: Ibca2065e9014ec67167057f89ef07d36103f89c7
diff --git a/doc/source/user/jobs.rst b/doc/source/user/jobs.rst
index 0b22252..eefb261 100644
--- a/doc/source/user/jobs.rst
+++ b/doc/source/user/jobs.rst
@@ -171,11 +171,30 @@
   job for reporting or classification purposes.
 
 **zuul.items**
-  A data structure representing the items being tested with this
-  change.
 
-.. TODO: implement and document items
+  A list of dictionaries, each representing an item being tested with
+  this change with the format:
 
+  **project.name**
+    The name of the project, excluding hostname.  E.g., `org/project`.
+  
+  **project.canonical_hostname**
+    The canonical hostname where the project lives.  E.g.,
+    `git.example.com`.
+  
+  **project.canonical_name**
+    The full canonical name of the project including hostname.  E.g.,
+    `git.example.com/org/project`.
+  
+  **branch**
+    The target branch of the change (without the `refs/heads/` prefix).
+  
+  **change**
+    The identifier for the change.
+  
+  **patchset**
+    The patchset identifier for the change.  If a change is revised,
+    this will have a different value.
 
 Change Items
 ++++++++++++