Adding support for non-blocking wait

It would be nice to have a possibility to use something like Java Future to wait for new items in the queue. By making use of the ListenableFuture interested objects could be informed whenever new items are enqueued.

I'd like to implement this feature as pull request if it's appreciated.