Patch tuple/dict handling in Item.upload

This fixes the unicode coercion error when passing a dictionary or list of tuples to Item.upload, thereby allowing for item filenames that differ from the filenames on disk. The original problem was that the call to `upload_file` was still using the `f` variable, rather than the post-processed `key` and `body` variables.