Fixed assert conditional in ROLE command test.
Cluster: Add COMMANDS command

COMMANDS returns a nested multibulk reply for each
command in the command table.  The reply for each
command contains:
  - command name
  - arity
  - array of command flags
  - start key position
  - end key position
  - key offset step
  - optional: if the keys are not deterministic and
    Redis uses an internal key evaluation function,
    the 6th field appears and is defined as a status
    reply of: REQUIRES ARGUMENT PARSING

Cluster clients need to know where the keys are in each
command to implement proper routing to cluster nodes.

Redis commands can have multiple keys, keys at offset steps, or other
issues where you can't always assume the first element after
the command name is the cluster routing key.

Using the information exposed by COMMANDS, client implementations
can have live, accurate key extraction details for all commands.

Also implements COMMANDS INFO [commands...] to return only a
specific set of commands instead of all 160+ commands live in Redis.
COMMANDS command: remove static + aesthetic changes.

Static was removed since it is needed in order to get symbols in stack
traces. Minor changes in the source code were operated to make it more
similar to the existing Redis code base.
COMMANDS command renamed COMMAND.
COMMAND: fix argument parsing.

This fixes detection of wrong subcommand (that resulted in the default
all-commands output instead) and allows COMMAND INFO to be called
without arguments (resulting into an empty array) which is useful in
programmtically generated calls like the following (in Ruby):

    redis.commands("command","info",*mycommands)

Note: mycommands may be empty.
COMMAND COUNT subcommand added.
DEBUG CMDKEYS moved to COMMAND GETKEYS.
Test: fix instances.tcl restart_instance abort error.
Test: find_available_port: check that cluster port is free as well.

The function will only return ports that have also port+10000 free, so
that Redis Cluster instances can be executed at the returned port.
Add Travis CI
Add automated testing for creating clusters

This script creates many different cluster configurations
by varying the number of instances and replica counts
defined at cluster initialization time.  If any cluster
topology fails to converge successfully, the entire test fails.

This script currently works on my OS X system and in a Linux VM.
It's designed to work on a CI server so it just runs
in the background and the system will report if the script
fails.
Add Redis cluster test to CI

The more tests the better!