#### Summary

Axios rejects error with Error type. Adding custom error type will help with distinguishing between axios and other errors. The only way now is to check 'request' field existence which is not always possible. Our internal custom error type has this field too.

#### Example:
``` js
const { axios, AxiosError } = require('axios');
...
try {
  ...
  const response = await axios.get(url);
  ...
} catch (error) {
  if(error instanceof AxiosError) {
    return processAxiosError(error);
  }
  throw error;
}
```

#### Context

- axios version: 0.18.0

Relates to: #24
test/specs/core/enhanceError.spec.js
var enhanceError = require('../../../lib/core/enhanceError');
describe('core::enhanceError', function() {
  it('should add config, config, request and response to error', function() {
    var error = new Error('Boom!');
    var request = { path: '/foo' };
    var response = { status: 200, data: { foo: 'bar' } };
    enhanceError(error, { foo: 'bar' }, 'ESOMETHING', request, response);
    expect(error.config).toEqual({ foo: 'bar' });
    expect(error.code).toBe('ESOMETHING');
    expect(error.request).toBe(request);
    expect(error.response).toBe(response);
  });
  it('should return error', function() {
    var error = new Error('Boom!');
    expect(enhanceError(error, { foo: 'bar' }, 'ESOMETHING')).toBe(error);
  });
});