Summary
----
According to the [spec](https://tools.ietf.org/html/rfc3986#section-2.2), `@` is a reserved character and thus should be encoded. But axios un-encodes this: https://github.com/axios/axios/blob/master/lib/helpers/buildURL.js#L7

```js
function encode(val) {
  return encodeURIComponent(val).
    replace(/%40/gi, '@').
    replace(/%3A/gi, ':').
    replace(/%24/g, '$').
    replace(/%2C/gi, ',').
    replace(/%20/g, '+').
    replace(/%5B/gi, '[').
    replace(/%5D/gi, ']');
}
```
This seems like a bug. What's the reason?

Context
----
- axios version: *e.g.: v0.17.0*
- Environment: *e.g.: node v8.4.0, windows 7 x64

test/specs/helpers/buildURL.spec.js
expect(buildURL('/foo')).toEqual('/foo');
  });
  it('should support params', function () {
    expect(buildURL('/foo', {
      foo: 'bar'
    })).toEqual('/foo?foo=bar');
  });
  it('should support object params', function () {
    expect(buildURL('/foo', {
      foo: {
        bar: 'baz'
      }
    })).toEqual('/foo?foo=' + encodeURI('{"bar":"baz"}'));
  });
  it('should support date params', function () {
    var date = new Date();
    expect(buildURL('/foo', {
      date: date
    })).toEqual('/foo?date=' + date.toISOString());
  });
  it('should support array params', function () {
    expect(buildURL('/foo', {
      foo: ['bar', 'baz']
    })).toEqual('/foo?foo[]=bar&foo[]=baz');
  });
  it('should support special char params', function () {
    expect(buildURL('/foo', {
      foo: '@:$, '
    })).toEqual('/foo?foo=@:$,+');
  });