#### 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

test/specs/headers.spec.js
function testHeaderValue(headers, key, val) {
  var found = false;
  for (var k in headers) {
    if (k.toLowerCase() === key.toLowerCase()) {
      found = true;
      expect(headers[k]).toEqual(val);
      break;
    }
  }
  if (!found) {
    if (typeof val === 'undefined') {
      expect(headers.hasOwnProperty(key)).toEqual(false);
    } else {
      throw new Error(key + ' was not found in headers');