Handle objects on S3 with empty names ('').

Objects may exist on S3 with empty names (''), which don't map so well to common filesystems. This commit handles these empty object names by naming them locally as '__AWS-EMPTY-OBJECT-NAME__'.

Error details:

...
DEBUG: ReceiveFile: Computed MD5 = d41d8cd98f00b204e9800998ecf8427e

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    An unexpected error has occurred.
  Please try reproducing the error using
  the latest s3cmd code from the git master
  branch found at:
    https://github.com/s3tools/s3cmd
  If the error persists, please report the
  following lines (removing any private
  info as necessary) to:
   s3tools-bugs@lists.sourceforge.net
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Invoked as: ./s3cmd -v -d sync s3://bucket/path/ dir/Problem: OSError: [Errno 20] Not a directory
S3cmd:   1.5.0-alpha3

Traceback (most recent call last):
  File "./s3cmd", line 2180, in <module>
    main()
  File "./s3cmd", line 2105, in main
    cmd_func(args)
  File "./s3cmd", line 1259, in cmd_sync
    return cmd_sync_remote2local(args)
  File "./s3cmd", line 946, in cmd_sync_remote2local
    seq, total_size = _download(remote_list, seq, remote_count + update_count, total_size, dir_cache)
  File "./s3cmd", line 905, in _download
    raise e
OSError: [Errno 20] Not a directory

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    An unexpected error has occurred.
  Please try reproducing the error using
  the latest s3cmd code from the git master
  branch found at:
    https://github.com/s3tools/s3cmd
  If the error persists, please report the
  above lines (removing any private
  info as necessary) to:
   s3tools-bugs@lists.sourceforge.net
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!