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
Use _prep_block_device in rebuild.

This patch makes rebuild slightly more similar to build by calling the
same function to prep block devices.

Change-Id: I3040b49578ad0351be7819c29a449799f50c82a9
DRYing up volume_in_mapping code.

Libvirt, VMWare, and Xen drivers all reimplement this method. This
refactors the code into the `block_device` module so all drivers can
share it.

Future Work: Refactor xen so that strip_prefix doesn't need to be passed
to `volume_in_mapping`.

Change-Id: I026b655f2eb7ea9cebe84058749c05ce93bcb7d4
Merge "Code cleanup for rebuild block device mapping"
Merge "xenapi: Ax unecessary `block_device_info` params"
Merge "Use _prep_block_device in rebuild."
Merge "DRYing up volume_in_mapping code."
Merge remote-tracking branch 'citrix/master' into build-temp