Make resize functions return, so unlock_disk_and_settle is called.
Previously, the resize functions (resize_sfdisk_dos, resize_sfdisk_gpt,
resize_sgdisk_gpt) would not return. Instead, they reported the
change/nochange/changed result and exited.
This meant that unlock_disk_and_settle was not being called except in
the failure case.
growpart: Do not fail if only sgdisk is available.
Previously growpart would fail if sgdisk was available bug sfdisk
was not. This was mostly just because of the order in which support
was added. We never had a scenario where *only* sgdisk was available.
The change here is:
* effectively cache the value of 'has_cmd sfdisk' or 'has_cmd sgdisk'
in global variables SFDISK and SGDISK respectively.
* set SFDISK_VERSION=0 when sfdisk is not available.