Don't set empty body on external curl requests [Fixes #4791]

When the CURLOPT_POSTFIELDS option is present, curl adds a
default Content-Type header which can be changed but not
removed, causing authentication problems with signed requests.

The option should only be set if a request body is being sent.
Merge pull request #403 from acoulton/3.2/bug/4791-curl-sets-content-type-on-request

Don't set empty body on external curl requests [Fixes #4791]