block: add discard_zeroes and max_unmap to BlockDriverInfo

Signed-off-by: Peter Lieven <pl@kamp.de>
iscsi: add .bdrv_get_info

this is used to reveal max_unmap and discard_zeroes capabilities.

Signed-off-by: Peter Lieven <pl@kamp.de>
block/raw: add .bdrv_get_info

Signed-off-by: Peter Lieven <pl@kamp.de>
qemu-img: conditionally discard target on convert

if a destination has has_zero_init = 0, but it supports
discard zeroes use discard to convert the target
into an all zero device.

Signed-off-by: Peter Lieven <pl@kamp.de>
block-migration: efficiently encode zero blocks

this patch adds a efficient encoding for zero blocks by
adding a new flag indiciating a block is completly zero.

additionally bdrv_write_zeros() is used at the destination
to efficiently write these zeroes.

v2->v3:
 - changed type of flags in blk_send() from int to uint64_t
 - added migration capability setting to enable sending
   of zero blocks.

Signed-off-by: Peter Lieven <pl@kamp.de>