Encoding is in there because at some point I thought I might want to add a `charset` parameter to the `Content-Type` header if the type starts in `text/` and if the encoding of the string is done by us, i.e. the caller passed in a unicode string. Haven't implemented this yet, since I wanted to do things one at a time. If you want me to, I can remove this for the time being. By the way, this plan is also the reason why `ct` is computed outside the scope of the `is_file` conditional.

I'm no fan of postprocessing either, but I see little alternative here. The real benefit of `RequestField` is that it is a very simple yet powerful class. It is almost as simple to use as tuples, but geared towards our application. If we want to avoid the postprocessing, then we'd have to tie the field to the request earlier, which sounds like using a factory method or some similar cludge. I very much prefer this solution, where you can create a `RequestField` anywhere you want, and use it in any request you want.