Rework s3 command tests

This reworks the s3 integration tests that run the
s3 command.  It makes two major changes.

1. Tests are more self contained.  There's no more implicit state
   from helper functions you have to track down.  Each test shows
   what objects it creates both locally and on s3.

2. Verification is done at the botocore level rather than at the
   s3 cli level.  This way we're using an alternate means to validate
   the tests.

3. All local file operations are performed in a tmp dir that is removed after each
   test.  Temp files were previously being created in tests/ which would leave
   files lying around.  Also made it impossible to run tests in parallel.

The overall goal is to make it easier to add these types of tests so
we can have a high coverage for these "acceptance" tests.