vpc.c: Add VHD resize support

This patch introduces resize support for dynamic and fixed VHD
images. Note that differencing VHD images do not support this
operation.

In order to resize dynamic VHDs, the BAT region may need to be
extended. This may require moving the first data blocks, making
room for it to expand. This required updating the according
BAT entries for the moved blocks as well, as well as initializing
the new BAT entries.

In case of fixed VHDs, the only thing that needs to be done is
moving and updating the footer.

Note that this patch assumes that all the data blocks are written
right after the BAT.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>