Fix s3 fallback

Had a couple issues with the s3 fallback approach that have been addressed here:

* We were using non-standard keys when trying to set the credentials.  I have updated the keys so that they are a separate set of keys that exist along side the credentials for the queue.  Worst case scenario is the user has to have duplicate keys for both s3 and sqs, and that shouldn't be an issue.
* Clean up how we were doing transactions with s3.
* Use the `decoder` when parsing s3 data.  Currently we were just using the json gem that is brought in with the aws-sdk.  While that isn't a huge issue since you are getting it for free, we really should respect the users choice when using a different json encoder/decoder.
* Moved the `s3` method to be a instance method.  It was working fine, but if a user happened to be using queuel for multiple purposes (one queue for messages and another for syncing data for example) and expected different s3 fallback buckets for each, that would be impossible.  The connection to s3 isn't made until an action (read/write) is performed, so it will only take up a minor amount of extra resources to only memoize on the instance level, and not on the class level.


Minor README changes were made as well.