Support reduced-redundancy storage and user metadata

Hi.  This pull request makes the following changes to Net::Amazon::S3::Client::Object:

*   Document the content-disposition support

*   Extend the content-disposition support to `put_filename` as well as `put` (seems to be an oversight in the original implementation)

*   Refactor `put` and `put_filename` to prevent that sort of inconsistency in the future

*   Add a `storage_class` attribute, to allow selection of reduced-redundancy storage when uploading an object

*   Add a `user_metadata` attribute, to allow setting user metadata when uploading an object; in addition, when downloading an object that has user metadata, the metadata is stored in the attribute, so callers can find it

Please let me know if there are any changes you'd want to see before accepting this.

Thanks.