Request encoding

Allow customisation of the request data format, one of:

* URL encoded (default)
* JSON
* Multipart form-data

Todo:

- [x] Specs
- [x] Documentation and examples