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().

Return 0 instead of the number of bytes read; this makes the user-facing
API a bit simpler.

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

keep bytes return from internal method
Merge pull request #240 from ceph/wip-4665

Reviewed-by: Josh Durgin <josh.durgin@inktank.com>