Adds compression ability to the plugin and allows uploading to the root level

This commit adds 2 changes:
1) By making destination an optional parameter, it allows uploading to the root of the bucket (you must supply NULL to the Transfer object for this to happen, which can't be done without the change)
2) Allows marking the entire upload to be GZIP compressed prior to upload.  This simulates Apache's on-the-fly compression in S3's static server.  Also allows certain files (e.g., files that are already compressed and meant to be streamed) to be excluded from the compression phase.