Update nova rebuild to account for new image

Update the Nova driver's rebuild() to account for changes in the instance image
during rebuild.  Currently, rebuild ignores user requests to rebuild with a
new image, making it impossible to do image-based upgrades.  This adds logic
to the patcher to account for the preserve_ephemeral flag and updates rebuild()
to use the patcher to re-patch all driver_info during rebuild.

This also adds missing test coverage of the rebuild code.

Change-Id: I6c8aacd36e0095d0590a1dc552730f2d52036225
Closes-bug: #1334905.
Merge "Update nova rebuild to account for new image"