block: VHDX endian fixes

A bunch of changes to facilitate endian conversion fixes for VHDX.  Some
of these changed were spotted in code review, but once I tested on a BE
machine, the rabbit hole deepened significantly.

(big endian host tested on POWER7 [IBM 8406-71Y])

Reported-by: Markus Armburster <armbru@redhat.com>
Reported-by: Paolo Bonzini <pbonzini@redhat.com>
interim