Add support for multiple families/qualifiers in scanners.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Initial commit for ScanFilter.

This closes #51.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Add Viral to AUTHORS for his work on ScanFilter.

Add also my current employer.
Document ScanFilter and prevent it from being subclassed externally.
Convert the regexp key filtering mechanism to the ScanFilter.

Add an integration test to ensure this didn't break in the process.
Document how to run integration tests.
Add more scanner filters.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Enhance filters a bit and add integration tests.

Summary:
  - Make filter classes final.
  - Add Javadoc.
  - Add helper functions to be able to pass String objects in argument.
  - Add toString() methods.
Add a new helper function to produce better errors during tests.
Mention new scanner filters in NEWS.
Allow RPCs to fail-fast.

Add a new pair of public APIs to HBaseRpc to allow specifying
whether an RPC should fail as soon as it encounters a problem.
This is useful for applications with low-latency requirements
where retries are unnecessary anyway.

Once HBase has the ability to track a timeout per RPC this will
be less useful, but in the interim it's a very useful and small
addition.
Properly honor timestamps in DeleteRequest.

This fixes #58.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Update NEWS / THANKS.
Update suasync to 1.3.2.
Properly clean up when connection fails before being opened.

This can happen when we attempt to connect to a RegionServer, and we
buffer some RPCs to send once connected, but we never successfully
connect, because of a connection timeout.

Bug reported by Viral Bajaria.
Properly report which RPC has failed in HasFailedRpcException.

Under certain failure modes, the current code would make an RPC
fail with an exception that claims that it's a `getClosestRowBefore'
RPC that failed, because the META or ROOT lookup that was required
to serve the RPC the user actually wanted to send failed.  This
complicates error handling for the user, as it's more convenient
for them to get a reference back to their own RPC so that they can
retry it if they want to.
Fix a small race condition when looking up the ROOT region.

There was a check-and-act sequence on the ZooKeeper object
without acquiring the appropriate lock, which means that
we could potentially cause a NullPointerException while
retrying to lookup ROOT.

Also move the ZooKeeper callback into a real class instead
of an anonymous class.
Add HBase protocol buffers to the compilation process.

This assimilates the protocol buffer definitions from HBase's source
tree into AsyncHBase's build process, with very minimal changes made
on the proto files.

This introduces a dependency on Google's protobuf-java library.

Thanks to Michael Stack, Elliott Clark, and Viral Bajaria, who
helped with the initial versions of this change.
De-serialize the HBase 0.95+ znode that points to META.
Fix the process of META lookups for HBase 0.95 and up.

There is no longer any -ROOT- region in 0.95 and up, so when we find
a /meta-region-server znode in ZK, we now set a flag to remember that
there is no -ROOT- region, and we treat the .META. region as the -ROOT-
region.