Abstracted S3 access behind an interface.

Also reorg'd the integration tests a bit.
Can also now test against a local instance of the service.