Cache zuul status.json for one second.

Serve previously rendered zuul status.json if it is was formatted less
than one second prior. This caches the status.json reducing expensive
calls to format the status.json.

The cache ttl is configurable using the zuul.status_expiry configuration
option in the zuul config.

Change-Id: Ib3fcd75f30bc4d4ef5f09d2adfd566d10c58a991
diff --git a/doc/source/zuul.rst b/doc/source/zuul.rst
index 21d3bae..4c5a624 100644
--- a/doc/source/zuul.rst
+++ b/doc/source/zuul.rst
@@ -114,6 +114,11 @@
   starting jobs for a change.  Used by zuul-server only.
   ``status_url=https://zuul.example.com/status``
 
+**status_expiry**
+  Zuul will cache the status.json file for this many seconds. This is an
+  optional value and ``1`` is used by default.
+  ``status_expiry=1``
+
 **url_pattern**
   If you are storing build logs external to the system that originally
   ran jobs and wish to link to those logs when Zuul makes comments on