SFTPFile._async_response gets a new 'num' parameter giving the request
number. This can be matched up with the return value of
SFTPClient._async_request() to retrieve data specific to that request.
The prefetch queue SFTPFile._prefetch_reads is replaced with the dict
_prefetch_extents, which maps request numbers to (offset,length)
A lock is used to exclude the case where a response arrives in
_async_response before _prefetch_thread has updated it.