add lower-constraints job

Create a tox environment for running the unit tests against the lower
bounds of the dependencies.

Create a lower-constraints.txt to be used to enforce the lower bounds
in those tests.

Add openstack-tox-lower-constraints job to the zuul configuration.

See http://lists.openstack.org/pipermail/openstack-dev/2018-March/128352.html
for more details.

Change-Id: I6aa7ffba825c9186198f691992199f51f8804823
Depends-On: https://review.openstack.org/555034
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
diff --git a/.zuul.yaml b/.zuul.yaml
index 949ad2f..089ba6e 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -84,7 +84,7 @@
         # Use Member for py3 because arguably negative testing is more
         # important than admin, which is already covered by patrole-admin job.
         RBAC_TEST_ROLE: Member
-        USE_PYTHON3: True
+        USE_PYTHON3: true
       devstack_services:
         s-account: false
         s-container: false
@@ -101,8 +101,10 @@
         - patrole-py35-member
         - patrole-multinode-admin
         - patrole-multinode-member
+        - openstack-tox-lower-constraints
     gate:
       jobs:
         - patrole-admin
         - patrole-member
         - patrole-py35-member
+        - openstack-tox-lower-constraints