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.