Account for read buffering in hseek(SEEK_CUR)

These relative offsets need to be converted to be relative to the
backend's stream position, which is different due to buffering.
It could be done when writing too, as begin==end after flush_buffer(),
but it seems clearer to convert only when reading.  Fixes #152.
Minor improvement to binary searching in CRAM indices.

Sometimes it could pick a slice one before the optimal case, causing
one additional slice header to be fetched and decoded.