Rewriting the future feature to work more future-like.

Adding two methods dequeueAsync and peekAsync returning a future for the first item (byte[]) and not for the queue itself.

Adapting tests and javadoc
Extending async dequeue test