Add model function to wait for task

Sometimes we need to wait for a task to finish. Instead of writing the
waiting loop everytime, we can now use the function "wait".

Add the function "TaskModel.wait" which waits for a task to finish
for a maximum ammount of time (in seconds). If the task finishes before
the timeout expires, the function returns successfully; otherwise, an
exception is raised.
Also, update calls to an already existing function which does the same thing
in the test code, and replace its usages with this new function.

Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com>
Clean up test pool directories

During tests, some storage pools are created locally and their
directories are left behind in the system. The pool itself is removed
from libvirt, but the directory remains.

Remove the test storage pools directories after the tests are finished.

Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com>
Clone storage volume

In order to clone VMs, we will need to be able to clone storage volumes.

Add a new method to clone a storage volume, e.g.:

POST /storagepools/<pool-name>/storagevolumes/<volume-name>/clone {'pool': 'another-pool', 'name': 'new-name'}

This method uses the parameters 'pool' and 'name' which specify the destination
storage pool and the volume name. If 'pool' is ommited, the new volume will be
cloned to the same pool as the original volume; if 'name' is ommited, a default
value will be used.

Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com>
Clone virtual machine

The new command "POST /vms/<vm-name>/clone" will create a new virtual
machine based on <vm-name>. The new VM will have the exact same
settings, except the name, UUID, MAC address and disk paths; those
values will be generated automatically.

Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com>
Add tests and mockmodel for the cloning feature

The function "vm_clone" is now implemented on the mockmodel with a
similar implementation as the real model; the biggest difference is that
it doesn't deal with the different storage pool details.
Also, new tests were added.

Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com>
UI: Clone Guest(static message)

Signed-off-by: Yu Xin Huo <huoyuxin@linux.vnet.ibm.com>