Code cleanup for rebuild block device mapping

* Removes extra call to get block-device-mappings when detaching during
  recreate.

* Untangle network handling from block-device handling in rebuild

* DRYs up evacuate hosts tests

* Temporary mutation supports dicts as well as objs

* Make instance recreate exceptions more specific to aid testing

Change-Id: I242f9f6a7d329f27b06b7e81b9a418e01682c82e
xenapi: Ax unecessary `block_device_info` params

The xenapi driver uses the 'osvol' other_config to determine which
volumes to detach, making `block_device_info` unecessary for internal
functions.

`destroy` still needs to accept the param since it's part of the
virt-driver API.

Change-Id: I1bbd69f41f9a1e18d4759d0ef3c6de027d3c9981
Merge "Code cleanup for rebuild block device mapping"
Merge "xenapi: Ax unecessary `block_device_info` params"