Add response object to protocol errors to facilitate improved logging

Can now catch an HTTP exception and `getStatus()`, `getBody()`, and `getResponse()` on it.