Enable INCRBYFLOAT in cluster mode
add phpunit as dev requirement
isntall requirement with a better way
use phpunit 4.x instead of 3.x
Merge remote-tracking branch 'github/pr/170' into v0.8
Merge remote-tracking branch 'github/pr/159' into v0.8
Update CHANGELOG.

[ci skip]

Meh
New commands: PFADD, PFCOUNT, PFMERGE (Redis 2.8.9).

Backported from the master branch.

Many thanks to @rubensayshi for his initial commits on this in #163,
but I had to start from scratch for the master branch first.
Skip integration tests for HyperLogLog commands on Redis < 2.8.9.

Caught this by running the test suite on TravisCI which still runs an
older version of Redis 2.8. We should find a more decent way to handle
differences in profiles when commands get added between patch releases
of Redis, our custom skip method will do for now.
Fix parsing of the output of CLUSTER NODES to fetch slots map.

There was an error in presence of slaves in the cluster configuration,
see #165 for reference.
Update CHANGELOG.

[ci skip]
New command: ZLEXCOUNT (Redis 2.8.9).

Closes #176.
New command: ZRANGEBYLEX (Redis 2.8.9).

Closes #175.
New command: ZREMRANGEBYLEX (Redis 2.8.9).

Closes #177.
Update CHANGELOG.
[tests] Use annotations to specify expected Redis server version.

This change targets only method annotations and aims to make the body
of tests more readable using the @requiresRedisVersion annotation.

Tests using this annotation requires to be assigned the "connected"
group of tests because they create a connection to the Redis instance
specified in phpunit.xml to fetch its the version.

This is a quick example of how this annotation can be used:

    /**
     * @group connected
     * @requiresRedisVersion >= 2.8.9
     */
    public function testExecutedOnlyWithMatchingRedisVersion()
    {
    }

Future improvements (currently not needed) include:

  * Same annotation working on a class-level (but still applied only
    to test methods with an explicitly assigned @group connected).

  * Ability to specify a version range.
Just rename a couple of local variables.
Use stream_socket_recvfrom() in PhpiredisStreamConnection.

Similarly to the socket-ext based connection using phpiredis, in our
stream based PhpiredisStreamConnection class we should read data from
the stream using stream_socket_recvfrom() instead of fread() because
the latter could block until a timeout is reached when the read buffer
contains less data then the specified length.

IMPORTANT: stream_socket_recvfrom() bypasses stream wrappers which
means that TLS/SSL, as requested by PR #158, won't ever work with
this connection class as the function returns the original encrypted
bytes.

This commit fixes issue #180.
prevent uncaught broken pipe error
Backport fix for cursor-based iterator abstraction from PR #182.