block: Add coroutine support to synchronous I/O functions
Implement transparent support for the following synchronous I/O
functions to be called from coroutines:
bdrv_read()
bdrv_write()
bdrv_pread()
bdrv_pwrite()
bdrv_pwrite_sync()
bdrv_write_sync()
bdrv_flush()
These functions will use asynchronous I/O behind the scenes but
otherwise behave the same as the truly synchronous implementations.
This change allows synchronous I/O code in QEMU to just work in a
coroutine.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>