[HBASE-10502] ParallelScanner: a client utility to perform multiple scan request in parallel.

Author: liyintang

Summary:
ParallelScanner is a utility class for the HBase client to perform multiple scan requests in parallel. It requires all the scan requests having the same caching size for the simplicity purpose.

This class provides 3 very basic functionalities: {@link #initialize()}, {@link #next()},  {@link #close()}.
* The initialize function will Initialize all the ResultScanners by calling {@link HTable#getScanner(Scan)} in parallel for each scan request.
* The next function will call the corresponding {@link ResultScanner#next(int numRows)} from each scan request in parallel, and then return all the results together as a list.  Also, if result list is empty, it indicates there is no data left for all the scanners and the user can call {@link #close()} afterwards.
* The close function will close all the scanners and shutdown the thread pool.

Also, this diff includes a unit test, TestParallelScanner, to cover the functionalities of ParallelScanner.

Test Plan: Run through all the scan related unit tests and TestParallelScanner

Reviewers: manukranthk

Reviewed By: manukranthk

CC: hbase-dev@, daviddeng

Differential Revision: https://phabricator.fb.com/D1167268

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/0.89-fb@1567270 13f79535-47bb-0310-9956-ffa450edef68