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 "Place swift-servers in appropriate zones"