Reorder PUTObject methods for readability
Move hmac_signature and auth_header to PUTObject
Inline string_to_sign and init_headers_with_key

Move these two methods into PUTObject's initialize method. Try to make
the code read more cleanly.
Add a TODO comment in putobject.rb

Remind myself to check to see if a file already exists before uploading
it.
Slightly rearrange file and Amazon S3 setup code
Move header initialization & remove instance vars

Use the initialize method's parameters instead of a PUTObject instance's
variables.
Remove debugging statement from upload.rb

This commit is a bug fix.

A debugging statement called the string_to_sign method on an instance
of the PUTObject class. Unfortunately, the string_to_sign method was
removed in an earlier commit and thus caused the program to crash.
Use actual header data in the string to sign

In the string to sign for the Amazon AWS authentication header, use
the PUT request's actual header data instead of method parameters.
Move SHA-1 hash calculations

Move SHA-1 hash calculations to the beginning of PUTObject's initialize
method so that they don't interrupt the visual flow of header
initialization.
Add a comment on AMZ header canonicalization
Clean up PUTObject's initialize method
Comment method categories in PUTObject
Move PUTObject's get_response method up

This is the most important method provided by the class, so it shouldn't
be buried at the bottom of the class's interface.