handle failure of getgrgid_grpname() and getpwuid_username()

If these throw a TypeError (not sure how to cause it, but had one
report of same), we would die.  So catch that too.
Install instructions updates
Install Instructions Updates
Clarified GPL Version 2, --help text cleanup

Fixed a few mispells. Fixed --multipart-chunk-size-mb help text to be
15MB default instead of noneMB.
Clarified GPL version 2 plus text cleanups
Clarified GPL version 2 plus help cleanups
handle S3DownloadError better

Rather than backtracing, report the error and continue.
Merge branch 'master' of github.com:s3tools/s3cmd into upstream-master
add S3/ExitCodes, use them in all sys.exit() calls.

Beginning the process of returning useful exit codes.  First we
add the ExitCodes themselves, and start using them in sys.exit() calls
throughout for consistency.

Some are still a little weird, like returning EX_SOFTWARE when a
request to move a file results in an S3Error(NoSuchKey).  It's not
really a software failure, it's arguably a user input failure.  But to
fix it we have to catch the S3Error lower down, and raise a
ParameterError or similar.

None of the commands (put, get, sync, ...) yet return any status code,
so main() always exits with EX_OK when it runs to completion.
batch_mode-ectomy to fix recursive bucket_list

batch_mode was introduced to try to let deletes happen using the
BATCH_DELETE operator.  Unfortunately, that introduced some side
effects, specifically now only the first 1000 files in a bucket were
retrieved during operation del --recursive.  Furthermore, since
6f91f384, we no longer need the batch_mode logic as we are dealing
with slices of the remote_list.

This patch specifically removes the conditional as follows:

-            truncated = _list_truncated(response["data"]) and not batch_mode
+            truncated = _list_truncated(response["data"])

returning it to its pre-batch_mode glory, such that the entire list is
recursively obtained properly.

Furthermore, delete all references to batch_mode, as it is no longer
used anywhere after the above change.
Fix subcmd_batch_del() given empty remote_list

If remote_list was passed, but was empty, the test
   if len([item for item in [uri_str, bucket, remote_list] if item]) != 1

would fail (if remote_list on an empty list returns False), as would
uri_str and bucket being None.  So we would incorrectly fail.

Fix is to catch remote_list being not None and empty before here,
and return gracefully.
fix sync_local2remote [x of y] upload counts

In verbose mode, sync local2remote prints lines like:
 /file.pdf -> s3://mybucket/file.pdf  [1 of 68321]

However, the y value in [x of y] was incorrect.  It was only counting
new files to upload, not changed files to upload.
don't use attrs md5 when file was gpg-encrypted by us

Since 5fc2bbcc (2013-05-20 23:31:50 -0500), the value we stored into
the s3cmd-attrs header for md5 contains the value for the plaintext,
not the encrypted, instance of the file.  But after download we're
(incorrectly) checking the md5 of the encrypted file. This patch fixes
this.

We started storing the md5 value in s3cmd-attrs header in 1703df7009
(Fri Jun 15 23:43:00 2012).  So it's likely been broken for a couple
years, and we'll have to deal with it (check both before and after
decryption I suppose, in case it matches either).  That'll be another patch.

With the new Content-MD5 branch too, calculating md5 before encrypting
is a really really bad idea - that's just broken design.  Encryption
should be done before we calculate the MD5 of the thing being
uploaded.  It was the filename swizzle that caught me off guard.
Fix app data directory
Add .idea directory to gitignore
Merge pull request #1 from GuillaumeCisco/gcisco-fix-appdata-directory

[RFM] Gcisco fix appdata directory
unicodise gpg_encrypt/decrypt info/debug output

Otherwise it crashes UnicodeError fed non-ASCII filenames.
Copy uri_params in bucket_list
Just print help instead of asking the user to try again
Merge pull request #325 from richo/master

Just print help instead of asking the user to try again