Errors and warnings are printed to stderr.

Fixes https://github.com/aws/aws-cli/issues/820

cc @jamesls @danielgtaylor 
This is a bit of an aside, but I guess I should also mention that you typically don't want to spin up threads in a unittest unless that's actually the behavior you're testing, i.e something related to threading/synchronization.  I realize that there are some existing S3 tests that do this, but we really shouldn't be doing this in new tests.  In this scenario, the thing you're testing has, as you mentioned, nothing to do with threads, so they should ideally not be spun up.  Compare that to a test like `TestMultipartUploadContext`, in which the class it's testing is _all_ about coordinating multiple threads together for a concurrent multipart upload (and nothing else).  That makes sense to spin up multiple threads because that's all that class is used for.

If the functionality is too hard to test in the existing class then it might make sense to extract a new class from this code.  It also looks like you might be able to accomplish what you want by using `.run()` instead of `.start()`, which does not spin up a new thread.  Some of the tests above in this file do this and you might be able to follow a similar pattern.