Added support for defining keys in upload() via dicts (i.e. item.upload({'key1': 'body1', 'key2': 'body2'})). Added support for rsync-like directory copying (i.e. `ia upload <item> dir/` vs. `ia upload <item> dir`).
Log identifier on HTTP errors.
If the file being uploaded already exists on IA and the MD5 checksums match, skip uploading file.