fix error handling in ClientErrorHandler

The ClientErrorInterceptors are designed to handle error responses from the server (non 200 response code). However, some exceptions can occur that are not failures returned from the server but failure to process the response on the client side such as json parsing exceptions etc. Instead of trying to pass those exceptions to the ClientErrorInterceptors, we check the type of the Exception and only pass it along if it can be expected to be handled by the ClientErrorInterceptors. If not, then we simply rethrow the exception.
Moving the Matcher class out also requires moving out the ResponseError class. These classes are very specific to the tests here in this class— hence they are inner classes. Moving them out for potential future use by other tests seems rather premature to me. Also, there's already an exception class [ClientResponseFailure](https://github.com/polarbizzle/rest-client-tools/blob/master/rest-client-generator/src/main/java/com/opower/rest/client/generator/core/ClientResponseFailure.java) that encapsulates a ClientResponse but it can't be used for these tests because it's the type of exception we key off in the [ClientErrorHandler](https://github.com/polarbizzle/rest-client-tools/commit/f4dd67dcab14b87a4cd28089dea4017e16b27962#diff-c069bc1285c1a2a84f9db6df3c1b5352R49). If we used ClientResponseFailure, in the nonClientResponseFailuresAreReThrown test, we wouldn't be able to tell if the ClientResponseFailure came from the ClientErrorInterceptor or from the normal response processing.