So, if I understand it right, in 0.19.0 you've added `mergeConfig`
And this function filter config and remove custom properties from it.
It broke my solution for cancellation:

How it works:
```js
const requestManager = new RequestManager();
const instance = axios.create();
requestManager.patchAxiosInstance(instance);

const search = q =>
  instance.get('/search', {
    cancelable: true, // this is no longer possible in 0.19.0
    params: { q },
  });
```
![Screenshot 2019-06-05 at 16 30 01](https://user-images.githubusercontent.com/7009699/58960132-2ddd1180-87af-11e9-8eb1-3542c4d0b1c1.png)

The solution:
```js
class RequestManager {
  constructor() {
    this.pendingRequests = new Map();
  }

  patchAxiosInstance(instance) {
    instance.interceptors.request.use(config => {
      if (!config.cancelable) return config; // this is no longer possible in 0.19.0

      const source = axios.CancelToken.source();
      const requestId = `${config.method}_${config.url}`;
      const cancelToken = source.token;
      this.addRequest(requestId, source.cancel);
      return { ...config, cancelToken, requestId };
    });

    instance.interceptors.response.use(response => {
      const { requestId } = response.config; // this is no longer possible in 0.19.0
      if (requestId) {
        this.removeRequest(requestId);
      }
      return response;
    });
  }

  addRequest(requestId, cancelFn) {
    this.cancelRequest(requestId);
    this.pendingRequests.set(requestId, cancelFn);
  }

  removeRequest(requestId) {
    this.pendingRequests.delete(requestId);
  }

  cancelRequest(requestId) {
    if (this.pendingRequests.has(requestId)) {
      const cancelFn = this.pendingRequests.get(requestId);
      cancelFn();
      this.removeRequest(requestId);
    }
  }
}
```

So, is it possible to relax filter in `mergeConfig` for custom properties? Because sometimes it is needed and very helpful in interceptors or somewhere else.
test/specs/core/mergeConfig.spec.js
params: '__sample params__',
      data: { foo: true }
    };
    var merged = mergeConfig(localDefaults, {});
    expect(merged.method).toEqual(undefined);
    expect(merged.params).toEqual(undefined);
    expect(merged.data).toEqual(undefined);
  });
  it('should merge auth, headers, proxy with defaults', function() {
    expect(mergeConfig({ auth: undefined }, { auth: { user: 'foo', pass: 'test' } })).toEqual({
      auth: { user: 'foo', pass: 'test' }
    });
    expect(mergeConfig({ auth: { user: 'foo', pass: 'test' } }, { auth: { pass: 'foobar' } })).toEqual({
      auth: { user: 'foo', pass: 'foobar' }
    });
  });
  it('should overwrite auth, headers, proxy with a non-object value', function() {
    expect(mergeConfig({ auth: { user: 'foo', pass: 'test' } }, { auth: false })).toEqual({
      auth: false
    });
    expect(mergeConfig({ auth: { user: 'foo', pass: 'test' } }, { auth: null })).toEqual({
      auth: null
    });
  });
  it('should allow setting other options', function() {
    var merged = mergeConfig(defaults, { timeout: 123 });
    expect(merged.timeout).toEqual(123);
  });
});