#### Summary

Axios appears to treat headers names that correspond to lowercase HTTP methods incorrectly.

If the header name matches the current HTTP method, the header name is transformed to `0`:

```js
axios.post('http://localhost:8888/', null, {headers: {'post': 'test'}});
```

```
POST / HTTP/1.1
0: test
Accept: application/json, text/plain, */*
Get: test
User-Agent: axios/0.17.1
Host: localhost:8888
Connection: close
Content-Length: 0
```

If the header name matches a different HTTP method, it is removed:

```js
axios.post('http://localhost:8888/', null, {headers: {'get': 'test'}});
```

```
POST / HTTP/1.1
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded
User-Agent: axios/0.17.1
Host: localhost:8888
Connection: close
Content-Length: 0
```

This only seems to happen when the header name is lowercase-a header named `Get` is handled correctly:

```
axios.post('http://localhost:8888/', null, {headers: {'Get': 'test'}});
```

```
POST / HTTP/1.1
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded
Get: test
User-Agent: axios/0.17.1
Host: localhost:8888
Connection: close
Content-Length: 0
```

I didn't see anything in the docs about special meaning for these header names when passed directly. `axios.defaults.headers` has keys that correspond to HTTP methods, but it doesn't seem to make sense to interpret the headers set directly in the same way.

#### Context

- axios version: 0.17.1
- Environment: node v8.9.1

lib/core/dispatchRequest.js
if (config.cancelToken) {
    config.cancelToken.throwIfRequested();
  }
}
/**
 * Dispatch a request to the server using the configured adapter.
 *
 * @param {object} config The config that is to be used for the request
 * @returns {Promise} The Promise to be fulfilled
 */
module.exports = function dispatchRequest(config) {
  throwIfCancellationRequested(config);
  
  config.headers = config.headers || {};
  
  config.data = transformData(
    config.data,
    config.headers,
    config.transformRequest
  );
  
  config.headers = utils.merge(
    config.headers.common || {},
    config.headers[config.method] || {},
    config.headers
  );
  utils.forEach(
    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],