builder: Only use virt-resize --no-sparse when writing to a block device.

Previously we would use the virt-resize --no-sparse option if the
final output file was a block device.  This is safe, but unnecessary
for example if virt-resize was used as an intermediate step.  So only
use this option if virt-resize is actually writing to the block
device.
builder: Refuse to write to a char device or /dev/null.

virt-builder --output /dev/null is tempting, but not possible, and
might result in /dev/null being deleted(!)  Check for this case and
prevent it happening.