Brick support for pNFS

This change implements a retry mechanism
during mounting nfs share. It tries mounting
using pnfs if no specific nfs version is specified
in the nfs options. In case of any failure during mounting
it falls back to regular nfs mount which will internally
try to mount with highest supported version. If nfs version
is specified in options then regular mount will be allowed.

Change-Id: I502b375548707ce7021cbacf1cd4f5532804aeb3
Implements: blueprint pnfs
Removes use of timeutils.set_time_override

The set_time_override function in timeutils was written as a
helper function to mock utcnow for unittests before 'mock' was
generally used. Now that we have mock and fixture, we no longer
need to use it.

Change-Id: I057d4bc3a8b1d4e96e6830cd3071dc96a05496dc
Partial-Bug: #1266962
Storwize/SVC: Change volume copy task to async

If Cinder crashes during a migration or retype (where data is moved and
the operation can take a long time), the storage ends up with multiple
copies of the same volume which requires storage admin intervention.

This patch maintain a list of pending operations which is backed up in
admin metadata, and a periodic task reviews the list and removes volume
copies whose copy operation completed. When Cinder comes up, check the
admin metadata and rebuild the list.

Change-Id: I6549712bb0083996faced89c2207a4c438ae953d
Closes-Bug: #1278035
Replace tearDown with addCleanup

Infra team has indicated that tearDown should not be used and should
be replaced with addCleanup in all places.

This patch replaces tearDown with addCleanup methods in cinder/tests/api.

Implements blueprint replace-teardown-with-addcleanup

Change-Id: I640c1985bf7fce6f2fbd4de8e56448b6c9af51ca
Merge "Removes use of timeutils.set_time_override"
Merge "Replace tearDown with addCleanup"
Merge "Storwize/SVC: Change volume copy task to async"
Merge "Brick support for pNFS"