Connection command builder interface
Update test
Update test
wip
Add format test
redis_n_replies error checking
Reconnect on error.

Fix issue with wrong use of va_args.
Major change is reliable message resending of single and pipelined
commands.

The connection object will now queue all outbound messages until a
successful response is received (note: protocol level, not application
level) - i.e. the message is received by redis and a response is
received.

If no connection to the server is possible the attempt fails
immediately. If the connection is established, but the command fails
again, then it will be retried 3 times.

Additionally moved the error string generation for sentinel errors into
the connection object.
Switch to new interface for reliable delivery.

New connection interface supports queueing and resending messages in the
event of a servive interruption. In order to use this interface the
wrapped commands must be used.

Additionally some minor cleanup of connection error reporting.