Add method to attach several interfaces for one network

Added interfaces_create method that creates the given
count of interfaces for the given network

Change-Id: I01b68d38449dc7bec6868d03159b1c9a803e67a5
Closes-Bug: #1301834
Fix sync function so that it doesn't remove nodes/envs wrong

'dos.py sync' function was using a bad call to libvirt which only
returns stopped domains. This causes envs with nodes on to be pruned.
If all nodes are on, then the whole env is removed from db

It further removes all nodes that are not in the db, this is not OK
 because it will undefine nodes that might have never been managed
 by devops. This is disabled untill a safer option is designed.

Change-Id: Ic257d6bd98d0a9b38df4ddb7aab04517762302a4
Closes-bug: #1316856
Refactor LibvirtXmlBuilder._get_name into object models.

funtion _get_name was moved to helpers.helpers.composite_name, and
 will now get its size setting as an argument. This allows for it to
 be reused by other drivers.

Attached full_name property to the ExternalModel class, this allows for
 more natural usage of the composite_name.

Change-Id: I38d372df78fd9e6a5875bfe70831a230473164cc
Addtion of rbd backend support in libvirt

Adds Pool and PoolHost models. Pool.sync() is called by 'dos.py sync' in
 order to load any pools from libvirt. If you define a new pool, or modify an
 existing one, you will use 'dos.py sync' to effect these changes in the db.

If a pool of type rbd is defined, then Pool additionally needs:
 source : the name of the rados pool
 hosts = [PoolHosts(name, port), ...] : the host and port of any of the
    ceph monitors
 auth_username : the ceph user with access to the _source_ rados pool
 secret_uuid : the uuid that libvirt assigned the secret that you used
    when creating the Storage Pool in libvirt.

these are normally loaded out of libvirt, you can call Pool.define() if you
 want devops to create the StoragePool for you.
libvirt_rbd: part 2, fix iso upload