Shutdown correction + corrected 40x response code handling

Two changes that I've needed for my instance:

a) code to shutdown the Async client correctly;
b) code to handle 401 (and other 40x response codes without entities) without failing, and being able to communicate the actual error response code back to the caller

Without (a), a shutdown leaves a whole lot of threads running for the async client.

Without (b), a 404 not found response (eg. from IndicesExist on a non-existent index), or a 401 response (from a custom Elastic authentication plugin) causes the JestClient to NullPointer.