When making a PATCH request or any random method and using a proxy the body is not sent

When making a PATCH request or any random method and using a proxy the body is not sent.
Seen on python 3.6
with requests 2.19.1
ubuntu 18.04
setting data will cause the body to be sent

## Actual Result

Body not sent

## Reproduction Steps

```
export https_proxy=https://127.0.0.1:8080;export http_proxy=http://127.0.0.1:8080
#start burpsuite or other proxy
python
import requests
r = requests.request("POasdfST","https://www.google.com", data="test123", verify=False)
# no body sent to burpsuite
r = requests.request("POST","https://www.google.com", data="test123", verify=False)
# body sent to burpsuite
```

## System Information

    $ python -m requests.help

```
{
  "chardet": {
    "version": "3.0.4"
  },
  "cryptography": {
    "version": ""
  },
  "idna": {
    "version": "2.6"
  },
  "implementation": {
    "name": "CPython",
    "version": "3.6.6"
  },
  "platform": {
    "release": "4.15.0-34-generic",
    "system": "Linux"
  },
  "pyOpenSSL": {
    "openssl_version": "",
    "version": null
  },
  "requests": {
    "version": "2.19.1"
  },
  "system_ssl": {
    "version": "1010007f"
  },
  "urllib3": {
    "version": "1.22"
  },
  "using_pyopenssl": false
}
```

This command is only available on Requests v2.16.4 and greater. Otherwise,
please provide some basic information about your system (Python version,
operating system, &c).


After a trying with postman it works, not sure if this is a proxy protocol issue of a burpsuite issue. 


```
r = requests.request("POasdfST","https://www.google.com", data="test123", verify=False)
# no body sent to burpsuite
```

You mentioned "PATCH" but this shows that you weren't using a normal method. Were you actually testing with PATCH?

```
r = requests.request("POST","https://www.google.com", data="test123", verify=False)
# body sent to burpsuite
```

It works the same for patch and random strings in the method.

Are there any redirects present in the history of the response for the 'random strings'?

No redirects. On some servers the request hangs because the content-length doesn't reflect the body size of 0 byes.

Just debugged this to ssl.py, the write is getting called with the correct data so the problem is probably on burpsuite side.  I will open a bug with them.

So just to make sure I decided to try in a python2 virtualenv and it works as it should.
Digging into the code a little more python2 was treating the body as bytes vs unicode string which is why it behaves differently.  When the body is bytes it seems to be sent as one call to httplib.HTTPConnection.send function vs two one for url/headers and one for body.  
In python 3 the method has changed and always sends the body in a seperate call to httplib.HTTPConnection.send(chunking it).  Either way it's not a requests issue it seems to be a burpsuite issue with chunking on non posts.

```
 def _send_output(self, message_body=None):
        """Send the currently buffered request and clear the buffer.

        Appends an extra \\r\\n to the buffer.
        A message_body may be specified, to be appended to the request.
        """
        self._buffer.extend(("", ""))
        msg = "\r\n".join(self._buffer)
        del self._buffer[:]
        # If msg and message_body are sent in a single send() call,
        # it will avoid performance problems caused by the interaction
        # between delayed ack and the Nagle algorithm.
        if isinstance(message_body, str):
            msg += message_body
            message_body = None
        self.send(msg)
        if message_body is not None:
            #message_body was not a string (i.e. it is a file) and
            #we must run the risk of Nagle
            self.send(message_body)
```