revlog: deal with chunk ranges over 2G on Windows (issue4215)

Python uses a C long (32 bits on Windows 64) rather than an ssize_t in
read(), and thus has a 2G size limit. Work around this by falling back
to reading one chunk at a time on overflow. This approximately doubles
our headroom until we run back into the size limit on single reads.

--HG--
branch : stable
extra : rebase_source : cb2322a9c49fcaaac5e7a32afd48c9659c6fd415