GCS: Add custom upload path, Content-Type, ACL, Cache-Control, etc!

Add arguments:
- upload-dir
- detect-encoding
- cache_control
- acl

...And, support Content-Type header!
Yes, it is all right. Let's put all of these methods from the S3 provider to `provider.rb` (and declare `protected`), and then override `encoding_option_for` in gcs. Does that make sense?