more exception catching leaving main()

If one of our commands failed to return a meaningful
return code, exit with EX_GENERAL.

If one of our commands raised a retryable exception (e.g. try again
later), capture that and don't traceback.  This will cut down on the
number of bug reports for "try again later" responses.

Clearly report non-specific S3Error, S3Exception, and related failures
with a traceback.