Add support for controlling concurrency

Control number of parallel threads via the env
variable TEMPEST_RUN_CONCURRENCY, which defaults to the current
behavior (0 == number of cores).

Change-Id: Id61848857e6a01790ec7ff24a64a91c32624bd0c
Place swift-servers in appropriate zones

This change is backwards-compatible with existing yaml templates.
We divide Swift servers among the number of zones set by the
swift.zones metadata.  Servers are placed in zones depending on
their rank in the scaled-out list of Swift servers in the
template used to build the overcloud stack.  The scaleout rank N
is: SwiftStorage|controller<N>.  The appropriate zone is calculated
as: zone = N % swift.zones + 1.

The devices metadata which will be set in the overcloud yaml
templates to enable the placement calculation will look like:

 r1z%<controller or SwiftStorage><N>%-<IP address>:%PORT%/d1

For example:

 r1z%SwiftStorage0%-<IP address>:%PORT%/d1

We anticipate that in future the zone placement algorithm itself
will evolve.

Change-Id: Ia178823a4926ae91f4fed3e8602807024e546d65
Merge "Add support for controlling concurrency"
Merge "Place swift-servers in appropriate zones"