Introduced a new elasticsearch exception family that can hold headers

 - These headers will be copied as response header on the rest response
I'm concerned that in this case, the per-key list of headers will not be cloned. Maybe this optimization should be removed and just be:

```java
if (customHeaders == null) {
  customHeaders = Maps.newHashMap(headers.size());
}
```