librbd: implement read not in terms of read_iterate

The read() method returns the bytes read, trimmed to the end of the image;
use the other read() variant to do this (which use aio_read()) instead of
read_iterate().

Signed-off-by: Sage Weil <sage@inktank.com>
librbd: add read_iterate2 call with fixed argument type

The existing read_iterate takes a size_t for the length, which is only 4GB
on 32-bit machines.  Instead, take a uint64_t length for the new
read_iterate2().

Fixes: #4665
Signed-off-by: Sage Weil <sage@inktank.com>
return 0 on success