Implement the image file download workflow

Implement image download, and related behaviour, using the background
messaging capabilities of the image instance.  This makes the image accessible
as a local file, by downloading it if necessary, or by checking that it is
readable if a local file.

Once the file is accessible, a message is sent to the same instance to trigger
the unpacking of the file.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>