Add body writing support

Does just what the title says. Useful for POST requests.

This has a bit of magic in the backend by also setting the Content-Length header automatically. If you'd rather keep this smaller, I can rip out that and this becomes a one line pull request.