Provide 'lazy' file copy for storage tasks
Provide 'lazy' file copy for storage tasks

The file copy used in the local copy was a blocking IO method.  This
would cause the python process that invoked it to block until it
completed.  Since this is typically used to copy virtual machine images,
those can be quite large and the blocking time can therefore be
significant (multiple minutes).

This change set introduces a 'lazy' copy method that yields in multiple
places to enable other python threads to run in parallel.  This is
particularly important if the invoker is using green threads.

The copy time is not reduced noticably, but other events for the
invokeing process are able to run in parallel.

Change-Id: I089d4173b879448e8bea3aa7cafa2fc2c4f673de

powervm/pypowervm,pypowervm/pypowervm