-w flag never actually checked s3 for a file's existence. Always refused to upload.
added non-zero exit statuses for unsuccessful runs

Previously, the program always exited 0 unless it crashed.  This covered many of the failure scenarios like "permission denied" and "The specified bucket does not exist", but didn't cover anything that would provoke usage() to be called ("-h" notwithstanding)

This adds an arbitrarily ascending list of non-zero exit codes to all the cases of "usage" and also the exit() called for unaviliable multi-part upload.  usage() not defaults to exit status 1, since -h has been covered and most other uses of usage() would be for error conditions
Merge pull request #1637 from jerm/fix_no_overwrite_and_exit_statuses

Fix bug in -w and added exit statuses for unsuccessful runs