When writing a negative sign the write(char) method goes directly to the output stream and by-passes the internal RedisOutputStream buffer causing random corruption of the output.  Casting the char to a byte ensures write(byte) is called which will properly buffer the output.
Speed up Sentinel related tests

* remove FIXME sleep codes for Sentinel related tests
** add functions for Sentinel tests (JedisSentinelTestUtil)
*** waitForSentinelRecognizeRedisReplication
*** waitForNewPromotedMaster
*** waitForSentinelsRecognizeEachOthers
**** TODO: there're no command for sentinel to list recognized sentinel
**** sleep 5.5 sec (sentinel pings to master every 5 sec)

* set HostAndPort class to public(no longer inner) class
** reason: We cannot know pool's current master if HostAndPort class is
private inner class / HostAndPort classes are duplicated (main/test)
** make getter method and parameterized constructor
*** set fields once, get anytime
fix bug in Protocol.processBulkReply()

* if RedisInputStream().read() at Protocol.processBulkReply() returns
-1, it runs with unexpected behavior
* fix: check and if return value is -1, it throws
JedisConnectionException with message "server has closed the connection"
** prevent unexpected behavior, specially ArrayIndexOutOfBoundException 
*** calls System.arraycopy() with length = -1 (cause limit = -1) at
RedisInputStream.read()

add pubsub unit test scenario : client-output-buffer-limit exceed

* Redis warns event(disconnect client) to their log, and suddenly
disconnected connection
** http://redis.io/topics/clients -> Output buffers limits
** so test expects JedisConnectionException with proper message
* fix bug: test expects JedisConnectionException
** I have mistaken while verifying seeing Exception's message
* remove huge print messages
upgrade dependencies in gradle build file (to match the ones in pom.xml) and update version of gradle wrapper
Merge pull request #474 from 50onRed/upgrade-dependencies

update gradle build file
upgrade to commons-pool 2
Merge branch 'speed-up-unit-test' of github.com:HeartSaVioR/jedis into upgrade_libs

Conflicts:
	src/test/java/redis/clients/jedis/tests/JedisPoolTest.java
	src/test/java/redis/clients/jedis/tests/JedisSentinelPoolTest.java
	src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java
	src/test/java/redis/clients/jedis/tests/ShardedJedisPipelineTest.java
	src/test/java/redis/clients/jedis/tests/ShardedJedisPoolTest.java
	src/test/java/redis/clients/jedis/tests/benchmark/PoolBenchmark.java
	src/test/java/redis/clients/jedis/tests/commands/TransactionCommandsTest.java
Merge branch 'master' of github.com:xetorthio/jedis
Updated maven dependency template Jedis version to  2.2.1 (latest)
Merge pull request #484 from mathieuboniface/patch-1

Updated maven dependency template Jedis version to  2.2.1 (latest)
Update Gradle build to use Apache Commons Pool 2.0.
Merge pull request #485 from tague/479_gradle_build_file_fix

Update Gradle build to use Apache Commons Pool 2.0.
make jedis unit tests pass to Redis 2.8.1

* increase sentinel instance to test JedisSentinelTest
** clear() called, slave promoted to master (slave of no one), New
Sentinel force to restore it (demote) -> slave is not reusable
* ipv6 applied at Redis 2.8 -> localhost / 127.0.0.1 / ::1 is now all same

* Makefile: sleep some time for launch each sentinel (workaround to sentinel's issue)
** issue to sentinel leader vote: https://github.com/antirez/redis/issues/1419
*** sentinel may confused to vote with sentinels launched approximately same time
Launch 3 nodes on ports 7379 to 7381 with cluster enabled.
Add command CLUSTER NODES
Add CLUSTER MEET command
Add CLUSTER ADDSLOTS and CLUSTER DELSLOTS commands
Add CLUSTER INFO, CLUSTER SETSLOT and CLUSTER GETKEYSINSLOT commands
Refactor to have interfaces.
Add cluster pipeline commands.
Prepare redis cluster for testing. The cluster will always be in a deterministic state to be able to reproduce -MOVED and -ASK