Error management, memory management details

Implemented error callbacks for command(). Now, either the success
or error callbacks are guaranteed to return for any command. Added
constants for error types.

Many improvements and fixes for memory management. Command objects
keep track of pending replies and delete themselves when completed.

Changed ReplyT value to remove the const and reference requirements.
Now, you do command<ReplyT> and the callback should take a
const ReplyT&, whatever the type is. Makes things more uniform.
Fix memory management, concurrency issues

Several hours of multithreaded debugging to find a nasty extra
ampersand. command_blocking() now returns a Command object with
the value and status accessible through methods.

Added the option to free memory or not for Command objects when
command() is called. If free_memory = true, then the Command
object is freed after the callback or error callback returns.
If free_memory = false, then the user must call cmd->free().

To implement this, we have to pass in a blank function to the
freeObject entry in the hiredis redisReader, because otherwise
it automatically frees memory. This was not cool for the blocking
case.
Removing timer_callbacks global, ev_timer allocation

Found out that ev_timer watchers have a void* data that allows
currying information to the libev callbacks! That means I could
stick the Command* in there and completely get rid of the global
timer_callbacks map that was needed before.

Additionally, we can move ev_timer into the Command object instead
of separately allocating it on the heap. Simplifies management.

Implemented a synchronous loop speed test based on the latest
and greatest command_blocking(). Happy to see it is around
30k/s, which is 100% network delays.