<!-- Click "Preview" for a more readable version --

Please read and follow the instructions before submitting an issue:

- Read all our documentation, especially the [README](https://github.com/axios/axios/blob/master/README.md). It may contain information that helps you solve your issue.
- Ensure your issue isn't already [reported](https://github.com/axios/axios/issues?utf8=%E2%9C%93&q=is%3Aissue).
- If you aren't sure that the issue is caused by Axios or you just need help, please use [Stack Overflow](https://stackoverflow.com/questions/tagged/axios) or [our chat](https://gitter.im/mzabriskie/axios).
- If you're reporting a bug, ensure it isn't already fixed in the latest Axios version.
- Don't remove any title of the issue template, or it will be treated as invalid by the bot.

⚠️👆 Feel free to these instructions before submitting the issue 👆⚠️
-->

#### Is your feature request related to a problem? Please describe.
While trying to migrate to the new FormData autogeneration (by using postForm or setting Content-Type to multipart) I realized arrays won't work anymore. An 'arr' proprety with two entries will be converted to name="arr.0" and name="arr.1" in the payload.
I saw in the source-code that once the name has a suffix like '[]' it will post it as such. But our springboot backend wants the key to be 'arr' (not 'arr[]') and our client-side typescript interface has a key named 'arr' and not 'arr[]' either.

#### Describe the solution you'd like
Plain arrays should also be send automatically, without the need to put '[]' to its name. If that's a breaking change, make it optional via options.

#### Describe alternatives you've considered
Springboot can't parse the default 'arr.0', 'arr.1' format. And adding '[]' to the type, the client-side object and the desired property in the backend is not an ideal solution.

In typescript properties of types/interfaces usually don't have a '[]' suffix. But the whole point of migrating to this new feature is to have type-safe services with a typed payload instead of just any 'FormData' object.

#### Additional context

test/unit/adapters/http.js
assert.equal(success, false, 'request should not succeed');
        assert.equal(failure, true, 'request should fail');
        assert.equal(error.code, AxiosError.ERR_BAD_OPTION_VALUE);
        assert.equal(error.message, 'error trying to parse `config.timeout` to int');
        done();
      }, 300);
    });
  });
  it('should parse the timeout property', function (done) {
    server = http.createServer(function (req, res) {
      setTimeout(function () {
        res.end();
      }, 1000);
    }).listen(4444, function () {
      var success = false, failure = false;
      var error;
      axios.get('http://localhost:4444/', {
        timeout: '250'
      }).then(function (res) {
        success = true;
      }).catch(function (err) {
        error = err;
        failure = true;
      });
      setTimeout(function () {
        assert.equal(success, false, 'request should not succeed');
        assert.equal(failure, true, 'request should fail');
        assert.equal(error.code, 'ECONNABORTED');
        assert.equal(error.message, 'timeout of 250ms exceeded');
        done();