#### Describe the bug
On the Interceptor section on README.md, where we are explaining the usage of the newly introduced `synchronous` and `runWhen` flags on `AxiosInterceptorOptions`, we are passing null for the optional parameters for example:

```javascript
axios.interceptors.request.use(function (config) {
  config.headers.test = 'I am only a header!';
  return config;
}, null, { synchronous: true });
```

When using this in a typescript project you'll get an error saying:

> Argument of type 'null' is not assignable to parameter of type '((error: any) => any) | undefined'

The reason is we didn't specify null as a type for our interceptor handlers.

#### To Reproduce
In a typescript project with `strictNullChecks` set to `true` , import axios and then write the following in you IDE(make sure typescript is configured in your IDE) 

```javascript
axios.interceptors.request.use(function (config) {
  config.headers.test = 'I am only a header!';
  return config;
}, null, { synchronous: true });
```

Your IDE will now report the following error

> Argument of type 'null' is not assignable to parameter of type '((error: any) => any) | undefined'

As per the `typescript` docs

>When `strictNullChecks` is `true`, `null` and `undefined` have their own distinct types and you’ll get a type error if you try to use them where a concrete value is expected.

#### Expected behavior
Type definition should explicitly include `null` as a type for the interceptor methods

#### Environment
 - Axios Version [e.g. 1.1.2]
 - Adapter [e.g. XHR/HTTP]
index.d.ts

type AxiosHeaderValue = AxiosHeaders | string | string[] | number | boolean | null;
type RawAxiosHeaders = Record<string, AxiosHeaderValue>;
type MethodsHeaders = {
  [Key in Method as Lowercase<Key>]: AxiosHeaders;
};
interface CommonHeaders  {
  common: AxiosHeaders;
}
type AxiosHeaderMatcher = (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean;
type AxiosHeaderSetter = (value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher) => AxiosHeaders;
type AxiosHeaderGetter = ((parser?: RegExp) => RegExpExecArray | null) |
    ((matcher?: AxiosHeaderMatcher) => AxiosHeaderValue);
type AxiosHeaderTester = (matcher?: AxiosHeaderMatcher) => boolean;
export class AxiosHeaders {
  constructor(
      headers?: RawAxiosHeaders | AxiosHeaders,
      defaultHeaders?: RawAxiosHeaders | AxiosHeaders
  );
  set(headerName?: string, value?: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
  set(headers?: RawAxiosHeaders | AxiosHeaders, rewrite?: boolean): AxiosHeaders;
  get(headerName: string, parser: RegExp): RegExpExecArray | null;
  get(headerName: string, matcher?: true | AxiosHeaderMatcher): AxiosHeaderValue;
  has(header: string, matcher?: true | AxiosHeaderMatcher): boolean;
  delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean;
  clear(): boolean;
  normalize(format: boolean): AxiosHeaders;
  toJSON(asStrings?: boolean): RawAxiosHeaders;
  static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders;
  static accessor(header: string | string[]): AxiosHeaders;
  setContentType: AxiosHeaderSetter;
  getContentType: AxiosHeaderGetter;
  hasContentType: AxiosHeaderTester;
  setContentLength: AxiosHeaderSetter;
  getContentLength: AxiosHeaderGetter;
  hasContentLength: AxiosHeaderTester;
  setAccept: AxiosHeaderSetter;
  getAccept: AxiosHeaderGetter;
  hasAccept: AxiosHeaderTester;
  setUserAgent: AxiosHeaderSetter;
  getUserAgent: AxiosHeaderGetter;
  hasUserAgent: AxiosHeaderT