Replace AppendableByteArrayInputStream in DirectDruidClient

* Replace with SequenceInputStream fueled by an enumeration of ChannelBufferInputStream which directly wrap the response context ChannelBuffer
* Added zero-length byte array when DirectDruidClient is done. This prevents an odd race condition on `done`.
* Improves query speeds by 1~2% in my simple tests

(old pull request didn't like the force)
You mean if the iterator tries to get an element beyond what is expected?

if DONE is set, then queue.isEmpty() should return FALSE once all the input streams are consumed. I can add that check if that would satisfy what you're looking for.