Throw exceptions for image/container not found

In some cases we were not throwing exceptions for a number of methods when
an image or container was not found. There were a few causes:

1. The response from Docker for pulls of nonexistent images changed. Now we
   check for both the old and new responses.

2. We were expecting Jersey to throw an exception for all 404 responses.
   However, Jersey doesn't process the response status code or throw
   exceptions for responses where we don't specify a response entity. This
   is the case for requests that we expect to return an empty response.

   We now tell Jersey to unmarshal those responses into a string (which
   should end up null/empty) so that it will also process the response
   status and throw a WebApplicationException on 404, 500, etc.

3. Many DefaultDockerClient methods were trying to catch a
   WebApplicationException when calling DefaultDockerClient.request(), but
   request() never throws a WebApplicationException. It always wraps them
   in DockerRequestException. Those methods are now fixed.

In a couple cases we now have to deal with exceptions in the tests that
would not have occurred before. This involves detecting whether we are
running in CircleCI, since it throws exceptions on removeContainer() no
matter what. Annoying, but we can work around it.

Fixes #101.
Merge pull request #102 from spotify/rohan/exceptions

Throw exceptions for image/container not found
Use jnr-unixsocket instead of junixsocket.