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

Originally opened by @acoulton in [R4791](http://dev.kohanaframework.org/issues/4791) and based on #403 

>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.

Ref #547. Please review and merge :)

Thanks!