First version of a ring builder

This change actually does quite a bit.

  - Removes duplication in the swift yaml file, meaning you can now add
    hosts directly to a global hosts section, which then can be refenced by
    name. You can still define hosts in the other hosts areas, but this stops
    duplication.

  - Adds a bunch of extra settings to the swift yaml file to support ring
    building, including:
      * min_part_hours
      * port (for account, container and object (storage policies))
      * drives
      * repl_ip (specify a replication IP to use, if it differes from main)
      * repl_port (a different replication port.. as above)

  - Passing the server ports and the correct drives value through to templates

  - scripts/swift_rings.py:
      This script reads in the swift.yaml file and generates all required
      rings. I have gone this approach as this why there is no annoying
      ansible getting in the way. The next step is to write a rings playbook
      that runs the swift_rings.py script locally and then copies all the rings
      to every memeber of the swfit group.

      Alternativelty we could pass the script and swift yaml to each node (via
      swfit_common role) and have a simple playbook that runs the script on
      each node to build the rings.

One benefit of swfit_rings that reads in the yaml, is that we could actaully
simplfy what actaully needs to be translated into an ansible inventory. (no
ring specific settings).