My idea was forward compatibility. Instead of rewriting the interfaces everytime some new configuration option comes along, I thought it would be best to simply have a single object which can hold all that configuration and be passed around.

If you don't agree with this approach, then I can turn `field_encoding_style` and `form_data_encoding` into parameters for `encode_multipart_formdata` and `render_headers`. That would certainly clarify where to document them. And with default parameters in place, forward compatibility shouldn't be too much of a problem.

Do you agree with the request object holding attributes for this configuration? I feel users should not have to manually call `RequestMethods.request_encode_body` to pass them there, so I'd still use attributes inside the class to store stuff.