Supports Multi Key commands to JedisCluster (revised of #673)

(It's revised PR of #673.)

Hello.

As supporting Redis Cluster work, I implemented Cluster multi key commands based on previous interfaces.

During implementing, I found that some commands are fine with Redis, but maybe some commands are not fine with Redis Cluster.
(Actually there're no documentation from Redis describing cluster-able commands.)

So I removed some suspicious commands from interface, and introduced new interfaces for Jedis Cluster.
(Please let me know when you think something is wrong.)

Below is the commands I removed from previous interfaces.

BinaryJedisClusterCommands (copied from BinaryCommands)

List<byte[]> blpop(byte[] arg);
List<byte[]> brpop(byte[] arg);
Long move(byte[] key, int dbIndex);
MultiKeyBinaryJedisClusterCommands (copied from MultiKeyBinaryCommands)

List<byte[]> blpop(byte[]... args);
List<byte[]> brpop(byte[]... args);
Set<byte[]> keys(byte[] pattern);
String watch(byte[]... keys);
String unwatch();
byte[] randomBinaryKey();
JedisClusterCommands (copied from JedisCommands)

List<String> blpop(String arg);
List<String> brpop(String arg);
Long move(String key, int dbIndex);
ScanResult<Map.Entry<String, String>> hscan(final String key, int cursor);
ScanResult<String> sscan(final String key, int cursor);
ScanResult<Tuple> zscan(final String key, int cursor);
MultiKeyJedisClusterCommands (copied from MultiKeyCommands)

String watch(String... keys);
String unwatch();
String randomKey();
ScanResult<String> scan(int cursor);
ScanResult<String> scan(final String cursor);
Set<String> keys(String pattern);
List<String> blpop(String... args);
List<String> brpop(String... args);
And I introduce some utils and exception, you can find it from commit log.

Please review and comment so that this PR goes to cluster-revised.
Thanks!