Do not assume that the position of a MultiBulkResponse iterator is 0.
Change how Redis errors such as -ERR replies generates exceptions.

The "throw_errors" connection parameter has been removed and replaced by the
new "exceptions" client option since exceptions on -ERR replies returned by
Redis are not generated by connection classes anymore but are thrown by the
client class and other abstractions such as pipeline contexts.

This change does not affect much people using the Predis\Client class (aside
from the different configuration) but gives much more flexibility to those
building their own pieces of code around the internal classes of Predis.
Remove the "safe" pipeline option.

Just let users specify the appropriate pipeline executor.
Pass also the command that generated the server error.
Fix Predis\Command\ServerEvalSHA::getScriptHash().

"Predis\Command\ServerEvalSHA::getScriptHash()" was calculating the hash
while it just needs to return the first argument of the command.
Client handles -NOSCRIPT falling back to EVAL for scripted commands.

Now Predis\Command\ScriptedCommand uses EVALSHA instead of EVAL internally
so that performances should be better since the client do not resend the
Lua script body on each call.

Plain EVALSHA commands are not affected and will return or throw the error.
Remove almost useless method.
Set raw arguments when switching from scripted command to EVAL.
Fix phpdoc.
Clean up leftovers.
Update README.

[ci skip]
Fix README.
Optimize command pipelines.

Using SplQueue instead of a plain PHP array to queue command instance in
the pipeline is faster and makes the underlying implementation definitely
more clean.

This change is not going to be backported to Predis v0.7 due to changes
in Predis\Pipeline\PipelineContextInterface.
Fix CHANGELOG.
Slightly optimize internals of MULTI / EXEC transactions.

We start using SplQueue to enqueue the commands executed inside a MULTI /
EXEC context so that we can dequeue them for parsing their replies later.

This change does not affect performances but makes the code more clean.
Add a pipeline executor that internally uses MULTI / EXEC.

The actual pipeline is wrapped between MULTI and EXEC to ensure that all the
commands are correctly sent and executed on the server. The whole pipeline is
discarded should it fail at a certain point during execution.

We do not use our Predis\Transaction\MultiExecContext abstraction internally
but rely on raw commands since this new executor does not really need full
support for Redis transactions.
Rewrite the logic used to handle Redis commands with clustering.

The reason for this change is to support the upcoming redis-cluster since
it has different behaviors compared to the client-side cluster implementation
provided by Predis. For example redis-cluster will not support key tags or
certain operations currently available with our client-side implementation.
[test] Add tests for pipeline executors.
Fix comment in package.ini.

[ci skip]
TIME can be considered a read-only command in MASTER / SLAVE.