Updating event system to be able to emit errors

I've updated the event system to be able to emit CommandExceptions encountered
while preparing commands, transferring requests, and processing commands. This
change makes the Command layer behave in a similar manner to the HTTP layer.
When a CommandException is encountered while preparing a command, the error
event is emitted for the Command, allowing listeners to handle the problem
before an exception is thrown. This type of evented error handling is required
in order to be able to send commands in parallel or in batches.

I'm still working on testing, but this is the start of the WIP branch.
Fixing event classes
Adding the ability to get the transaction to allow listeners to easily throw exceptions
Adding the ability to pass in context in constructor
Ability to get transaction from exception and setting response in request error event
Fixing CommandToRequestIterator
Cleaning up tests
Making the event system and errors work with an interface

This change modifies the command package to utilize a
CommandExceptionInterface rather than forcing a CommandException
to be thrown by ServiceClientInterface::execute. This change also
introduces a new method on ServiceClientInterface that is responsible
for creating CommandExceptionInterface objects when an error occurs
while transferring a request for a command. This method can be
implemented to customize which exception is thrown when an error
occurs.
Removing CommandExceptionInterface

Removing CommandExceptionInterface. If users of the library want consistent
application specific exceptions, then they must extend the execute() method
to wrap exceptions that are thrown and document properly with docblock tags.
Updating tests
Fixing batching errors and adding missing tests
Merge pull request #12 from guzzle/event_loop

Updating event system to be able to emit errors