func tests: Be willing to retry PUTs
func tests: Be willing to retry PUTs

We've seen a lot of gate failures that involve one or just a couple of
tests dying with something like

  Captured traceback:
  ~~~~~~~~~~~~~~~~~~~
      Traceback (most recent call last):
        File "test/functional/tests.py", line 562, in testFileListingLimitMarkerPrefix
          self.assertTrue(file_item.write_random())
        File "test/functional/swift_test_client.py", line 1069, in write_random
          if not self.write(data, hdrs=hdrs, parms=parms, cfg=cfg):
        File "test/functional/swift_test_client.py", line 1047, in write
          self.conn.make_path(self.path))
      test.functional.swift_test_client.ResponseError: 503: 'Service Unavailable'

Let's give it a couple retries, see if we can make the gate more
reliable.

Change-Id: I90a319943e948ac7df86cb29046f711adbb2fe20

openstack/swift,openstack/swift,swiftstack/swift,openstack/swift,swiftstack/swift,tipabu/swift,tipabu/swift,openstack/swift,tipabu/swift,tipabu/swift,swiftstack/swift