vhd-tool: 'serve' now accepts raw inputs as well as chunked and NBD

It will also infer the destination size using BLKGETSIZE64 since the
destination will often be a block device.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
vhd-tool: in 'serve' (receiving data) open the destination read/write

Otherwise writes fail with EBADF (unsurprisingly)

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Merge pull request #5 from djs55/serve

vhd-tool serve fixes