get UserMetadata in a get-object call

The changes here are these:

1) any user metadata added in a `put-object` call had to have a string key, which differed from any of the other metadata keys.  Now it accepts keyword keys or string keys. 
2) `get-object` did not expose the user metadata.  Now any user metadata is added into the metadata map and keys are converted to keywords.

```clj
user> (put-object creds "csvs" "file1" "contents1" {:my-special-meta-data "downloaded"})
#<PutObjectResult com.amazonaws.services.s3.model.PutObjectResult@3d601539>
user> (pprint (get-object c "csvs" "file1"))
{:content
 #<S3ObjectInputStream com.amazonaws.services.s3.model.S3ObjectInputStream@2e93d13f>,
 :metadata
 {:content-md5 nil,
  :server-side-encryption nil,
  :etag "4891e2a24026da4dea5b4119e1dc1863",
  :cache-control nil,
  :content-disposition nil,
  :content-type "text/plain; charset=MacRoman",
  :content-length 9,
  :last-modified #<Date Sun Feb 17 17:57:59 PST 2013>,
  :content-encoding nil,
  :my-special-meta-data "downloaded"},
 :bucket "csvs",
 :key "file1"}
```