Add support for custom request body

`WebTestClient` now properly handles custom request body (e.g. JSON) and doesn't assume everything is URL encoded.