Issue 1:
Is your feature request related to a problem? Please describe.

When create Axios instance, there is no way to reuse the global interceptors.

The issue has been discussed in the past (#993), but it is no longer in progress. So I create this issue.

test("instance not have global interceptors", () => {
axios.interceptors.response.use(response => response, error => Promise.reject(error));
const instance = axios.create();
// axios.interceptors.response.handlers => 1
// instance.interceptors.response.handlers => 0
expect(instance.interceptors.response.handlers.length).toBe(axios.interceptors.response.handlers.length); // Fail!
});

Reproduction

```shell
$ git clone https://github.com/genie-youn/axios-inherited-interceptors.git
$ cd axios-inherited-interceptors
$ npm i
$ npm run test
```

Describe the solution you'd like

Add new property withGlobalInterceptors in AxiosRequestConfig

test("instance with `withGlobalInterceptors` options should have global interceptors ", () => {
axios.interceptors.response.use(response => response, error => Promise.reject(error));
const instance = axios.create({withGlobalInterceptors: true});
// axios.interceptors.response.handlers => 1
// instance.interceptors.response.handlers => 1
expect(instance.interceptors.response.handlers.length).toBe(axios.interceptors.response.handlers.length); // success
});

Are global interceptors inherited by instances in run time or copied when created?

IMHO, Global interceptors should be copied when instance are created.

Once an instance is created, it should not be affected even if the global interceptors are changed. I think it would be easier to maintain an instance in an independent state from global.

Similarly, it should not affect the global even if the interceptor of the instances are changed.

Describe alternatives you've considered

In the thread, It was also discussed about the extend. @bierik

import axios from 'axios';

export const api = axios.create({
baseURL: process.env.API_ROOT,
});

api.interceptors.request.use((request) => {
request.headers.Authorization = `Bearer mytoken`;
return request;
});

// Here the pdfInstance extends the api instance so the pdfInstance has also access to the request interceptor but is also able to override the baseURL and adding additional header such as Accept
export const pdfInstance = api.extend({
baseURL: '/file',
responseType: 'arraybuffer',
headers: {
Accept: 'application/pdf',
},
});

Personally, I prefer the AxiosRequestConfig way because it is simpler. 😄

Additional context

It’s a very personal idea. I will appreciate any feedback.

I hope this feature will come into real world, and if this idea looks good, I want to implement this feature. 😆

Issue 2:
#### Summary

I searched through all the issues and double checked the ones referenced in #812 but my problem seems to be different.

My problem is that creating an instance does not copy over or use the interceptors added to the global Axios.

import Axios from "axios";

Axios.interceptors.request.use((config) => {
console.log("Global Interceptor")
return config;
});

const axiosInstance = () => {
let instance = Axios.create();
console.log(Axios.interceptors.request); // Has 1
console.log(instance.interceptors.request); // Has 0
return instance;
}

axiosInstance().post("/test", { testing: "data" }); // Doesn't output "Global Interceptor"
Axios.post("/test", { testing: "data" }); // Outputs "Global Interceptor"

#### Context

Axios version: 0.16.2

Environment: Webpack 2.6.1, Chrome Canary 61.0.3147.0, Mac OS X