Fix nova evacuate issues for RBD

For RBD scenario, there are some issues in Nova code
now against evacuate function:

1. Based on current implementation, nova evacuate and
nova rebuild are sharing some code. When user enables
the on_shared_storage option for nova evacuate, nova
will check if the instance path is accessible. For
the RBD scenario, the volume(block) is shared between
different hosts, though the path isn't shared at the
filesystem level. This patch fixes this issue and adds
test cases for that.

2. Missing the 'recreate' parameter for rebuild method.

3. After evacuated successfully, and restarting the failed
host to get it back. Nova will call init_host() and then
call method _destroy_evacuated_instances(). In method
_destroy_evacuated_instances(), nova will check again if
the storage is shared or not to decide if the storage
should be destroyed. Now nova is using temp file to check
if it's shared file system, but it's wrong for RBD case.
so Nova will run into a failure to fail to delete the
block storage, since it's used by the new instance. This
patch fixes this issue and adds test cases for that.

Closes-Bug: 1249319
Closes-Bug: 1340411

Change-Id: Idc8c45b055e986cf85730235d5d25777632ad1c1