Tweaking curl implementation
Renaming client and server response exceptions

- Adding more docs on error handling
- Tightening down the client interface to only allow RequestExceptions to be
  thrown from a client during a send() method. This makes error handling much
  easier and predictable.