Start v1.6.0
Update third-party dependencies.
Add tests to reproduce AlreadyNSREd bug #81

Added two tests to reproduce the bug that will lead to retrial
RPCs when the code goes through KnownToBeNSREd region path in
the sendRpcToRegion in the HBaseClient.  This will turn worse
if the region is NSREd for some good amount time leading to
the failure of probe RPC with TooManyAttempts.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Do not schedule RPCs known to be NSRE'd for retry when they are first issued.

When issuing an RPC that is destined to a region that is known to be
unavailable, we used to add a callback on the RPC to potentially retry
it.  Once the region appeared to be available again, we re-dispatched
the RPC and added another callback to potentially retry it.  This
resulted in the RPC's callback chain having two (or more) callbacks to
retry the RPC, which could cause the RPC to execute more than once.

This fixes #81.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Fail the RPC when we fail to de-serialize its response.

Whenever we fail to de-serialize the response to an RPC, we throw an
exception that is caught by Netty, which then causes us to go into
exceptionCaught(), from which we ought to close the connection to HBase
and cleanup() all outstanding RPCs (either by re-scheduling them if we
can, or by making them fail with a ConnectionResetException).

The bug here is that the RPC for which we failed to de-serialize the
response is no longer considered "in flight" because we were handling
its response, so we never triggered its callback chain.  This change
fixes that by propagating the exception to the caller.
Fix compatibility issue with CDH5.

In the latest version of CDH5 (0.96.1.1+cdh5.0.2), the asynchbase client
fails if closing a scanner while there are still rows to be read.
Specifying numberOfRows == 0 avoids the issue (this matches the behavior
in the HBase synchronous client).

Without this fix, the client fails processing the close response with
the error: 'org.hbase.async.InvalidResponseException: Should not have
gotten any cell blocks, yet there are [num] bytes that follow the
protobuf response.  This should never happen.  Are you using an
incompatible version of HBase?'
Retry RPC at RegionMovedException.

AsyncHBase did not recognize RegionMovedException when HBase 0.96
raised it. It was converted to unknown RemoteException, and the
corresponding queries failed.  We need to retry the HBase RPC like
we do for NotServingRegionException.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Catch up with the protobuf changes in upstream HBase 0.98.