Rewritten s3 module to allow for additional modes of operation.

This is (mostly) a rewrite of the s3 module to provide additional modes of operation, specifically both get and put of a key and file respectively, creation and deletion of a bucket and contents (blank key creation for "virtual directories" will come later) and also the ability to get the download url of an object for us in other tasks.