block: vhdx read support

Preliminary vhdx read support!  Does not take advantage of coroutines
or scatter-gather iovec reads yet, but qemu is able to use this block
device to mount a dynamic or fixed disk read-only, and read the
contents.