#### 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
function cleanHeaderConfig(method) {
      delete config.headers[method];
    }
  );
  var adapter = config.adapter || defaults.adapter;
  return adapter(config).then(function onAdapterResolution(response) {
    throwIfCancellationRequested(config);
    
    response.data = transformData(
      response.data,
      response.headers,
      config.transformResponse
    );
    return response;
  }, function onAdapterRejection(reason) {
    if (!isCancel(reason)) {
      throwIfCancellationRequested(config);
      
      if (reason && reason.response) {
        reason.response.data = transformData(
          reason.response.data,
          reason.response.headers,
          config.transformResponse
        );
      }
    }
    return Promise.reject(reason);
  });
};