Support non-blocking (Async) APIs

On #647, we switched I/O from Stream based Old I/O to New I/O.
Based on New I/O, finally I can introduce non-blocking APIs to Jedis!

I'm not familiar with Java New I/O, and our clients may have Java 6, so there're some restrictions on implementation.
I'm trying to implement it simply, so I try to avoid multi-thread things as many as possible.
(It may lose some performances.)
1 dispatcher handles 1 connection's request/response with only one thread.

Current APIs doesn't support Sharded, Redis Cluster, Sentinel, scripting, transaction, pipeline.
You can't select DB index, and you should present AUTH password with AsyncJedis constructor.

I wish NIO experts would improve my base codes to gain high performance.

Please review and comment. Thanks!

ps. It's upmerged.
ps2. Failing test is not related to async, it's related to https://github.com/antirez/redis/issues/1561.
We should fix it by create another issue.
Since `allWriteTasksCounter` is an `AtomicInteger` and `writeTaskQueue` is a `LinkedBlockingQueue` we don't need to use the `synchronized` keyword on the `registerRequest` method. Both variables use thread-safe types.
Additionally, I noticed that the `allWriteTasksCount` variable is declared, incremented, however it is never read. Do we need it?