Uniquely identify builds to prevent race

In the original implementation of this, the latest running container
containing "PICKME" was selected for the container to export. This
creates a race condition.

Instead we now identify the image by a UUID created each run, so that
they will not overlap if multiple builds happen simultaneously.

Change-Id: Iaaf5683435f424517774067a1d95732ad096c988
Fix expected status code in Ironic lookup

Ironic returns a 202 on successful lookup, the agent previously
expected a 200.

Change-Id: I180f411024a4bd82eff581037352c65d14b2d3a4
Revert "Fix expected status code in Ironic lookup"

This reverts commit 7b8b06c71401b5ce13fc73ed13b0e49e648cba8b.

The wrong function was fixed - it was the heartbeat, not the lookup,
that was checking for the wrong status code.

Change-Id: I35f49ca4fa1295d266f68b72b6ecdd5184181bd5
Fix expected status code in Ironic heartbeat

The agent previously checked for a 204, Ironic actually returns
a 202 for heartbeats.

Change-Id: I7ef45dd13dee3c40802aee3424afa3f67bf4a237
Merge "Uniquely identify builds to prevent race"
Accept new parameters for `prepare_image`

The parameters sent to `prepare_image` changed in
https://review.openstack.org/#/c/86490/

This patch brings `prepare_image` up to date with that change.
It also changes the way configdrive is written to disk, to match
that Ironic is now allowing Nova to build an ISO partition and
send the raw image to the agent.

This patch also swaps out subprocess.call for processutils.execute
in the standby module, since the commands were being changed anyway.

Lastly, this patch changes the expected `hashes` dict to be a
string parameter called `checksum`, to match what glance returns.

Change-Id: Id8af9be920ba51e7e1ce60f4ffd1477e413582c9
Merge "Accept new parameters for `prepare_image`"
Merge "Revert "Fix expected status code in Ironic lookup""
Merge "Fix expected status code in Ironic heartbeat"