<issue_start><issue_comment>Title: Add ability to use custom headers when serving tiles
username_0: Fixes #2: if cached tiles are compressed with gzip we need to specify additional headers in order to process the tiles correctly. In other cases we will get  `Uncaught Error: Unimplemented type: 3` exception for Mapbox service.

The syntax is short and clear:

### cache

```javascript
use(disk.cache({dir: './tiles/mylayer', headers: { 'Content-Encoding': 'gzip' }}));
```

### provider

```javascript
.use(disk.provider('/path/to/dir/{z}/{x}/{y}/file.png', {headers: {'Content-Encoding': 'gzip'}}));
```

_NB_: I think that in the future there are can be more options, so I decided to extract it to `headers`.
<issue_comment>username_0: The tests are red, but I don't sure that we need to support such old Node.JS versions. But if we, I can add some support via https://github.com/sindresorhus/object-assign , what do you think @username_1?
<issue_comment>username_0: Specs are fixed for old versions of Node, rebased
<issue_comment>username_0: @username_1 any news here?
<issue_comment>username_1: Sorry for the delay! This fell of my radar. This is currently possible with [tilestrata-headers](https://github.com/naturalatlas/tilestrata-headers) – which I think is the best way to handle it so each provider / cache plugin doesn't need to implement headers individually. For your example:

```js
var disk = require('tilestrata-disk');
var headers = require('tilestrata-headers');

.use(disk.cache({dir: './tiles/mylayer'}))
.use(headers({ 'Content-Encoding': 'gzip' });

.use(disk.provider('/path/to/dir/{z}/{x}/{y}/file.png'}))
.use(headers({ 'Content-Encoding': 'gzip' });
```
<issue_comment>username_0: Huh, it makes sense! Thanks :)
<issue_comment>username_1: Thanks for the otherwise-great pull request!