More changes to add `RequestField` objects

This change modifies `RequestField.__init__` slightly so that the caller may
pass in a dict-like object to the constructor to pre-populate the headers for
a field. This was provided primarily for convenience.

This change enables you to pass in `RequestFields` in addition to tuples and
dictionaries to encode_multipart_formdata. The old iter_fields function is
preserved for backwards compatibility (it was a public method, I'm not sure if
this was intentional). The new iter_fields function supports iterating over
lists of `RequestField` objects.

Added test cases for both `RequestField` objects and
`encode_multipart_formdata`.