ClientAsyncPrefetchScanner implements async scanner behaviour.
Specifically, the cache used by this scanner is a concurrent queue which allows both
the producer (hbase client) and consumer (application) to access the queue in parallel.
The number of rows returned in a prefetch is defined by the caching factor and the result size
This class allocates a buffer cache, whose size is a function of both factors.
The prefetch is invoked when the cache is halffilled, instead of waiting for it to be empty.
This is defined in the method prefetchCondition().