fix($httpBackend): don't send empty string bodies

The `XMLHttpRequest.send` spec defines different semantics for `null`
than for an empty String: an empty String should be sent with a
`Content-Type` of `text/plain`, whereas `null` should have no
`Content-Type` header set.

Closes #2149
fix($httpBackend): set headers even if they have falsy values

Closes #2984