teuthology: updating RGW task to support regions

Extending the rgw.py task to allow for regions and zones
to be specified in the YAML file.

Signed-off-by: Joe Buck <jbbuck@gmail.com>
teuth: reworked rgw to support regions / zones

Signed-off-by: Joe Buck <jbbuck@gmail.com>
rgw: move common rgwadmin function to a new utility file

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
task_util: move rados command here

Six copies are replaced with one, with an added option to check status
automatically. This should probably be used in a few places where the
return code is ignored.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
rgw: add multi-region and zone support

Take client<->zone/region and the associated pools from ceph.conf, so
we don't have to invent a new format to specify it.

General region info is added to a new configuration section in the rgw
task. Each client is assumed to be a different zone, and a system user
is created with the key specified in the yaml, so it can be passed to
later task configuration as well. This isn't strictly necessary, but
avoids having to lookup this info in later tasks through something
like radosgw-admin.

Ports are allocated automatically because there's no obvious mapping
from host to client in the task configuration. Later tests can get the
endpoints desired by reading the region map.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>