Catch potential UnsupportedOperationException thrown by Netty.

Under certain circumstances, the underlying buffer of the replay
decoder can be a CompositeChannelBuffer, which leads to an uncaught
UnsupportedOperationException when Bytes.pretty() is called on the
buffer (e.g. when debug logging is turned on, or when logging an
exception due to a malformed RPC response from HBase).

Change-Id: I9c5dec33ea3c4f9c3311b1d501b36366fed2136b
Factor out some test code.

Put the non-unit tests into a package, org.hbase.async.test,
so they can share code with a new Common module.

Change-Id: I37d5f76724d3f0d9c300ba8cc858b909b456017e
Start adding some basic integration tests.

Change-Id: I7e779e4ef0bf2b2c1c38c05bcb676d4bd68b3d1f
Add helper functions to create/truncate tables in integration tests.

Change-Id: Ic8b4e88ed17e6c12fdee1e40f53c23cc84f1f754
Fix serialization bug involving batched puts and deletes.

A `multi' RPC that contains a DeleteRequest for a whole row could lead
to an incorrectly serialized RPC.  This results in the client throwing
a "DeferredGroupException: At least one of the Deferreds failed" with
the first exception being a "RemoteException: IPC server unable to read
call parameters: Error in readFields".  On the RegionServer side, the
log complains about the same "Error in readFields", most likely caused
by a "NegativeArraySizeException: -1" thrown from the `readAttributes'
method of `OperationWithAttributes'.

This bug can only be triggered when writing to HBase 0.92 or above.

This closes #25.

Change-Id: I1bfe41a84abe7a6b4dc45f111e9a504ec8258d1d
Fix hard-coded family names.
Add support for scanning with multiple qualifiers.

This closes #35.
Based on an original patch from Nicolas Thiébaud.
Use Junit to run the individual regression tests.
Allow specifying a single integration test to run.

If the environment variable TEST_NAME is set, then only that
test will be run.  The value is expected to be the name of the
method of the test to run.
Add a basic scan integration test.
Disallow changing time ranges once scanner started.

This check should have been there in the first place.
Do not attempt to deserialize 0-length byte arrays to avoid a Netty bug.

Add a regression test for this bug and upgrade Netty to 3.5.9.
Thanks to Andrey Stepachev for providing the workaround code.
This closes #40.
Minor NEWS updates.
Add a regression test for issue #41.
Add a stress test for buffered counter increments.
Allows specifying the number of versions to return in get/scan.

This closes #26.
Clarify the current semantics of flush().

No code change, just javadoc.
Minor style fix.

No code change.
Avoid re-creating new FlushBufferedIncrementsTimer objects.
Update to suasync 1.3.0.