If Content-Length is already set, don't override

Re: #1159
Guard against users sending unprepared requests.
Merge pull request #1119 from Lukasa/diags

Better diagnostics when trying to send unprepared request
Merge pull request #1161 from sigmavirus24/fix1159

If Content-Length is already set, don't override