non-zero exit code on failure

Hi Alex,

I hope you're doing well!

I noticed that s3cp commands return zero on failures. 
This pull request fixes that in addition to centralizing the error handing in one place, cf `S3CP#standard_exception_handling` in `utils.rb`

`#s3_to_local` is also made more robust in case the source key is not specified by the user, or does not exist in S3.

see you soon,

Alexis