Clean Valgrind reports, improved speed examples

Take that, hours of debugging memory leaks! Did lots of structural
tweaks to more smartly keep track of commands and make sure everything
is evenutally freed from the heap.
Implement unique Command ID to replace void* usage

Ran into a nasty segfault when using 100 parallel asynchronous command
loops, where a command's address would match up with a previous
command's
address. To circumvent the whole issue, Redox keeps a counter of how
many Commands it has created and assigns each Command a unique id in
the order they are created.

Changed all data structures and methods to pass around Command IDs, so
nothing uses void* anymore. I consider this a very good thing, but it
did seem to slow down performance 20-30% because of the extra lookups.
Will see if there's a solution later.
Add more guards, rearrange logic to be more bulletproof

Fixed a couple of bugs found with a test case of 100 parallel
asynchronous clients. As of now, there are no known memory
leaks, segfaults, or deadlocks in Redox.
Implement .get and .set helper commands, running check

Easy few lines for get and set commands that are easy to use.

Implemented a condition variable that blocks run() until the event
loop is running and Redis is connected. Also added a check to
command() that will throw an exception if you try to add a command
before calling run().
Commenting, cleanup, privatizing methods/variables

Thoroughly cleaned up redox.hpp to expose a minimal public API, and
commented those well. Generally cleaned up a bunch of stuff.

Added wrapper function DEL, which could be useful.