VMware: spawn refactor image fetch/cache

To more cleanly support the various permutations of the following during
spawn():
- different types image to spawn with (sparse, flat, iso,
  and streamOptimized, ova in the futre)
- different ways to obtain the image (http download, and direct
  datastore copy in the future)
- different ways to prepare the downloaded image bits into a usable
  image in the image cache (replace -flat.vmdk extent, convert from
  sparse, pick from imported VM, ...)

The following are introduced:
- Image prepare/fetch/cache functions : these are callbacks for
  processing the bits into a usable form to be cached in the image cache
  under various scenarios.
- Image fetching functions : these are callbacks called by the processor
  to obtain the bits for the hypervisor.

All unit tests should pass unmodified after this refactor.

This should will allow for more self-contained additions/changes
to behaviors in these areas in the future.

Co-authored-by: Radoslav Gerganov <rgerganov@vmware.com>
partial blueprint vmware-spawn-refactor
Change-Id: I8fb46b5a3ef4bb89a6084df955d82821216ebb40
Merge "VMware: spawn refactor image fetch/cache"